Grunt.jsはNode.jsを使用したCUIのビルドツール。
タスクを設定してそれらを自動化していきます。
基本的にターミナルやらコマンドプロンプトを使用していきます。
プラグインをインストールすることによって、色々なタスクを行う事ができます。
例:
これらはあくまで一部です。
初期設定だけしていれば、Windows/Macともに使うことができます。
grunt.jsをインストールしていきます。
今回は、Mac環境での導入手順になります。
Node.jsのインストールは以前Ken.Otsukaが紹介してくれているのでここでは割愛させていただきます。
・ターミナルを起動させる
Finder > アプリケーション > ユーティリティ > ターミナル.app
からターミナルを起動させます。
・grunt-cli をインストール
sudo npm install -g grunt-cli
ターミナルを起動させたら上記のコマンドを実行してEnter
を押してください。
password
と出るのでMacログイン時のパスワードを入力してください。
ターミナル上にパスワードは出ないですが入力したら再度Enter
を押してください。
これでgrunt-cliのインストールは終わりです。
grunt-cliのインストールが終わったらターミナルでプロジェクトフォルダを作成して移動してGrunt.jsを作成します。
ここでは仮にデスクトップにgrunt_practice
というフォルダ名を作成してhoge
という名前のプロジェクト名で作成していきます。
今回は以下のフォルダ構造でやります。
project ├coffee │└index.coffee (実際に触るファイル) |-sass │└style.sass (実際に触るファイル) ├js │└index.js (gruntで吐き出されるファイル) ├css │└style.css (gruntで吐き出されるファイル) ├config.rb (compassの設定ファイル) ├package.json └Gruntfile.js
・デスクトップにフォルダを作成する
cd Desktop mkdir grunt_practice cd grunt_practice
・プラグインをインストールする
ここまでで下準備ができたので、Grunt.jsの作成と設定を行います。
ターミナルで
npm init
と入力するとname
とかversion
、description
など聞かれるので以下の様にここでは入力します。
上記を入力するとpackage.json
が生成され以下の様な値が入ってるかと思います。
package.json
{ "name": "hoge", "version": "0.0.1", "description": "This is test of Grunt.", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": "", "keywords": [ "Test" ], "author": "Junichi Honda", "license": "MIT" }
このままだとpackage.jsonを生かせないので、ターミナルで以下のコマンドを入力してください。
npm install grunt --save-dev
※gruntコマンドは--save-dev
をオプションでつけるとpackage.jsonにインストールした情報が自動で記載されます。
さらに、ここでプラグインもインストールしておきます。
ここではファイルが更新されたら自動で感知して処理を実行していくれるgrunt-contrib-watch
とcoffeescriptをjavascriptにコンパイルしてくれるgrunt-contrib-coffee
とsassをcssに変換させるgrunt-contrib-compass
をインストールしてみます。
ターミナルで以下のコマンドを入力してください。
npm install grunt-contrib-watch grunt-contrib-coffee grunt-contrib-compass --save-dev
これでwatch
とcoffeescriptのコンパイル
のプラグインがインストールされたかどうかpackage.json
を確認してみます。
package.json
{ "name": "hoge", "version": "0.0.1", "description": "This is test of Grunt.", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": "", "keywords": [ "Test" ], "author": "Junichi Honda", "license": "MIT", "devDependencies": { "grunt": "~0.4.1", "grunt-contrib-coffee": "~0.7.0", "grunt-contrib-watch": "~0.5.3", "grunt-contrib-compass": "*", } }
このpackage.jsonを見るとcoffeeとwatchがインストールされているかと思います。
・Gruntfile.jsを作成する
プラグインをインストールしただけでは動かないので、タスクを管理するGruntfile.jsを作成します。
package.jsonと同じ階層にGruntfile.jsを作成していきます。(ここではGruntfile.coffee)
Gruntfile.coffee
module.exports = (grunt) -> pkg = grunt.file.readJSON 'package.json' grunt.initConfig #package.jsonの読み込み pkg : pkg # coffeeの設定 coffee: compile : files: [ expand: true cwd: 'coffee/'#coffeeのスクリプトがあるフォルダ src: ['*.coffee']#上記フォルダ内の.coffee全対象 dest: 'js/'#コンパイルされるフォルダ名 ext: '.js'#コンパイルされた時のファイル拡張子 ] # compassを実行(別途compassのインストールが必要) compass: dev: options: config: "config.rb" # watchの設定 watch: files: ['coffee/*.coffee','sass/*.sass'] tasks: ['coffee', 'compass'] for taskName of pkg.devDependencies when taskName.substring(0, 6) is 'grunt-' grunt.loadNpmTasks taskName #taskの登録 # デフォでwatchのtaskにしておく grunt.registerTask 'default', 'watch'
このGruntfileではcoffee/
フォルダ内の.coffeeファイルすべてが変更されたら、js
フォルダ内にjavascriptとしてコンパイルされた状態で常に吐き出すという内容が書かれています。
ここまでで準備ができたのでターミナルで以下のコマンドを入力します。
grunt
を入力するとターミナルに
Running "watch" task
と出ます。
この状態でgrunt側がcoffee / sassフォルダ内を見張っていてくれているので、coffeeフォルダ内のindex.coffee / sassフォルダ内のstyle.scssを触ってみます。セーブしたタイミングで、
>> File "coffee/index.coffee" changed. >> Running "coffee:compile" (coffee) task >> Running "compass:dev" (compass) task >> File js/index.js created. >> create css/style.css (1.884s) >>Done, without errors.
と出ると成功です。
以上、ザックリとしたGruntの使い方ですが、プラグインを上手く使うと、altjs系やらメタ言語の書き出し、公開する前のタイミングでcss/JSを綺麗にしたり圧縮したりするタスクなどができます。
プラグインはここを参照してください。
また今回使ったGruntfileは一例なので、サンプル等はこちらが参考になります。
タスク系やリファレンスは本家と日本語を見ながら学んでいくと良いでしょう。
Written by Junichi Honda + Ken.Otsuka