これはオリジナルの grunt タスクを作成するための簡単なメモです。入門の中でも一番最初に理解すべき事柄を記載します。
この内容は 2013/10/26 に行われた HTML5ハッカソンの内容を記載しています。
必要なもの
前提条件として grunt の実行環境(npm や node 等)はインストール済みとします。
grunt を利用するためには
- package.json
- Gruntfile.js
を記載する必要があります。
package.json は npm install コマンドを発行することで必要な grunt-* ファイルをダウンロードします。
Gruntfile.js は grunt タスクが登録されたファイルです。
具体的に見てみます。
package.json
{
"name": "grunt-demo",
"version": "0.0.0",
"dependencies": {},
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-connect": "0.3.0",
"grunt-contrib-livereload": "0.1.2",
"grunt-regarde": "~0.1.1",
"grunt-open": "~0.2.0",
"matchdep": "~0.1.2"
},
"engines": {
"node": ">=0.8.0"
}
}
package.json には Gruntfile.js で使用する grunt-*が登録されています。このファイルが定義されているディレクトリと同じ位置で npm install コマンドを発行すると grunt-* 郡をダウンロードし node_modules ディレクトリへ格納します。
Gruntfile.js
'use strict';
var lrSnippet = require('grunt-contrib-livereload/lib/utils').livereloadSnippet;
var mountFolder = function (connect, dir) {
return connect.static(require('path').resolve(dir));
};
// grunt の定義
module.exports = function (grunt) {
// load all grunt tasks
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
// configurable paths
var yeomanConfig = {
app: 'app'
};
// grunt の初期化
grunt.initConfig({
yeoman: yeomanConfig,
watch: {
livereload: {
files: [
'<%= yeoman.app %>/*.html'
],
tasks: ['livereload']
}
},
connect: {
options: {
port: 9000,
// change this to '0.0.0.0' to access the server from outside
hostname: 'localhost'
},
livereload: {
options: {
middleware: function (connect) {
return [
lrSnippet,
mountFolder(connect, 'app')
];
}
}
}
},
open: {
server: {
path: 'http://<%= connect.options.hostname %>:<%= connect.options.port %>'
}
}
});
grunt.renameTask('regarde', 'watch');
// タスクの定義
grunt.registerTask('server', function (target) {
grunt.task.run([
'connect:livereload',
'open',
'watch'
]);
});
}
この grunt タスク定義は grunt server コマンドを発行したときに app/index.html をブラウザへ表示するためのタスクです。
Gruntプロジェクトを作成するためのツール
Grunt プロジェクトを作成するためには grunt-init を利用すると簡単に定義することができます。grunt-init はプロジェクトを自動生成するのに使用されるScaffoldingツールです。
npm install -g grunt-init
でインストールして下さい。使い方についてはプロジェクトのScaffolding を参照ください。