自分のPCでもJSファイルの自動圧縮や自動デプロイなどやる必要が出てきたので、今更ですがフロントエンド開発の必須アイテムでもあるビルドツール「Grunt」を自分のMacBook Proにインストールしました。若干ハマった部分もあったので、参考のためにインストール方法を書いておきます。
Gruntを使う前提として
GruntはNode.js上で動作します。まずGruntをMac OSにインストールするには、以下がインストールされている必要があります。
インストールされているかは以下のコマンドで確認できます。
Node.jsの確認
npmの確認
Homebrewの確認
こちらのインストール方法などについては過去に投稿しています。そちらを参照してください。自分の場合はすでにインストール済みの状態でした。
Gruntを使う準備 – Grunt-cliのインストール
Gruntはnpmを使ってインストールします。とりあえず、npmを最新の状態にします。
npmを最新の状態にしたら、Grunt-cliをインストールします。
バージョンを確認します。ちゃんと表示されれば、インストール成功です。
Grunt-cliは、「Gruntfile.js」と同じ階層にあるgruntを実行するためのコマンドです。Grunt-cliの働きにより複数のバージョンのGruntをプロジェクトごとに設定できるようにしてくれます。
これでGruntを使う準備が整いました。Gruntは、直接使用するプロジェクトのディレクトリ内にインストールします。
プロジェクトでGruntを使う準備
Gruntはプロジェクトごとにインストールして使います。
まず、Gruntを使用したいプロジェクトのディレクトリに移動します
移動したディレクトリの中にnpmでパッケージのバージョンを管理するためのpackage.jsonファイルを作成します。[npm init]コマンドを実行すると、質問形式でpackage.jsonファイルを生成してくれます。
package.jsonファイルの中身は以下のようになっています。普通のjsonファイルなので後から編集も可能です。
package.jsonを作成したら、いよいよGruntをプロジェクト用のディレクトリにインストールします。
インストールしたディレクトリ内でGruntのバージョンを確認します。ちゃんと表示されれば、インストール成功です。
※Gruntコマンドの「使い方」、「オプション」、「利用可能なタスク」は以下のコマンドで確認できます。
Gruntをインストールしたら、次にGruntfile.jsを作成します。Gruntfile.jsはGruntで実行するためのタスクを書き込むためのファイルとなります。
とりあえず、Gruntfile.jsに以下のように記述してみます。
これで準備完了となります。さっそくgruntコマンドを実行してみます。
成功すると、以下のように表示されます。
場合によっては、パスが通っていないために「-bash: grunt: command not found」と怒られて、gruntが実行できないこともあります。その場合はパスを通してあげます。
exportだと、exitしたり、ログアウトしたりすると設定がリセットされるので、ホームディレクトリにある「.bash_profile」ファイルに直接書き込んでおきます。
Gruntプラグインを使う
Gruntを使うと主に以下のようなことができます。
- JavaScript、HTML、CSSの構文チェック(バリデーション)
- JavaScript、CSSファイルの連結
- JavaScript、CSSファイルの圧縮(ミニファイ化、難読化)
- CSSスプライトの生成
- CoffeeScriptやTypeScriptのコンパイル
- SCSS(Sass)やLESSのコンパイル
- ファイル状態監視
- 単体テストの実行
- 自動デプロイ
今回、私は以下のタスクを設定してみました。
- JSファイルのミニファイ化
- ファイル状態監視によるタスク実行自動化
Gruntプラグインのインストール
Gruntにはさまざまなタスクを実行するための便利なプラグインが用意されています。Node.jsのパッケージ管理ソフトnpmを使ってGruntプラグインをインストールします。
JavaScriptファイルを圧縮してくれるプラグイン「grunt-contrib-uglify」をインストール。
ファイル状態を監視してくれるプラグイン「grunt-contrib-watch」をインストール。
ちなみに、インストール時につける「–save-dev」というオプションは、以下のブログ記事によると、それぞれpackage.jsonに保存(–save)、package.jsonのdevDependenciesにプラグインの依存関係を書き込む(-dev)という意味になるようです。
Gruntfile.jsファイルの設定
Gruntfile.jsファイルは以下のように記述します。
Gruntfile.jsの書き方は以下のページが参考になります。
Gruntでの監視実行
自動監視させる場合は、作業前に以下を実行しておきます。そうするとJSファイルに変更があれば自動的に圧縮を行ってくれるようになります。
Gruntプラグインの削除
Gruntプラグインの削除は以下のコマンドで行います。「–save-dev」のオプションをつけると、package.jsonに記載の情報も一緒に削除されます。
YosemiteにおけるHomebrew問題
最後に補足です。今回Gruntのインストール作業中にHomebrewもアップグレードさせたのですが、最初うまくいきませんでした。
[brew upgrade]コマンドを実行すると、以下のようなエラーが出てうんともすんともいきませんでした。
なんともMac OS X Yosemiteになり、Rubyのバージョンが2.0となりRuby 1.8がなくなったためと言うことらしいです。以下の記事にある解決方法を試してみました。
/usr/loca/binに移動します。
git pullします。
これでOKのようです。さっそくHomebrewをアップグレードします。
Homebrewのバージョンを確認します。
参照サイト
今回参考にしたサイトを紹介しておきます。
- Gruntで始めるWeb開発爆速自動化入門(1):ブラックなWeb開発現場の救世主、Gruntのインストールと使い方 (1/2) – @IT
- 現場で使えるGrunt入門 – Gruntを試そう | CodeGrid
- 開発環境構築 · padule/padule Wiki
- npmとpackage.json使い方 – Kokudoriing
- Webサイト制作に便利なGruntプラグイン(その1) – Qiita
- jsファイルの結合・圧縮をgruntを使って完全自動化 – Qiita
Gruntを一から勉強するならドットインストールがお勧めです。
Gruntのプラグインなどの開発を行うのであれば以下のサイトが参考になります。
それからGruntに関する書籍はまだまだ少ないので、以下のムック本は現時点においてはかなり貴重な情報源となります。Gruntの対抗馬として最近人気急上昇中のタスクランナー「gulp」の詳しい情報なども載っていておすすめです。
コメント