WebサイトやWebアプリケーションの画面仕様やデザインの検討や確認のために、 モックhtmlを書くことが度々あった。 そのたびに、テキストエディタで、生のhtml、css、Javascriptをガシガシ書いていた。 が、ページ数が多くなるに連れて、DRYじゃないことに憤りを感じ、メンテナンスが面倒になり、 もっと効率良く、メンテナンスが楽にできないものなのか、と考えていた。
node.jsの勉強をしていて、express.jsに出会い、テンプレートエンジンJadeと メタCSS言語LESSに出会った。Railsを使った開発では、CoffeeScriptを使っていた。 そこで、これらを使って静的なページを作るとかなり効率がいいのでは?と思った。
モックをはやく作るための道具
JadeとLESS、CoffeeScriptで静的なHTMLを作れないか。
Jadeは単体で使える。
LESSも単体でコンパイルできる。
もちろんCoffeeSriptも。
で、全部Node.jsの上で動く。
全部一発でビルドできれば、そりゃあ楽ちんだわぁ。
そういえば、Grunt.jsっていうのがあったな、たしか。
Javaのapache antみたいなやつ。
ということで、使うのは、
node.jsとGrunt.jsのインストール
node.jsは予めインストールしておく必要がある。Grunt.jsは、grunt-cliというGrunt.jsのCLIパッケージをnpmでインストールする。
$ npm install -g grunt-cli
ディレクトリとファイル
おそらく、こうしなければよい、という構造はない。 とりあえず、次のようなディレクトリ階層を作成し、2つのファイル、package.jsonとGruntfile.jsを作った。
├── Gruntfile.js ├── package.json └── src ├── coffee │ └── jade-de-mock.coffee ├── jade │ ├── includes │ │ └── javascripts.jade │ ├── index.jade │ └── layout.jade └── less ├── jade-de-mock.less └── reset.less
Grunt.jsのプラグインとタスク
jadeのコンパイルや、lessのコンパイル、coffeeのコンパイルは、Grunt.jsのプラグインを利用する。 そのため、まず、Grunt.jsが動作する環境を整備しないと。
package.jsonを書く
{ "name": "jade-de-mock", "version": "0.1.0" }
gruntとgruntプラグインをnpmでインストールする。
jade、less、coffeeのgruntプラグインは、grunt.jsが提供してくれている。
それと、前回のビルド結果を相違するcleanタスクも欲しいので、これもインストール。 というわけで、上記4つのgruntプラグインを、npmコマンドでインストール。$ npm install grunt --save-dev $ npm install grunt-contrib-jade grunt-contrib-less grunt-contrib-coffee grunt-contrib-clean --save-devこれを実行すると、上述のpackage.jsonにプラグインが追記され、結果、
{ "name": "jade-de-mock", "version": "0.1.0", "devDependencies": { "grunt": "~0.4.1", "grunt-contrib-coffee": "~0.7.0", "grunt-contrib-clean": "~0.5.0", "grunt-contrib-jade": "~0.8.0", "grunt-contrib-less": "~0.7.0" } }となる。
Gruntfile.jsを書く
Gruntfile.jsは、apache-antでいうところのbuild.xmlのようなもの。gruntに実行させるタスクをJavascriptで書く(CoffeeScriptでも良い)。
module.exports = function(grunt) { // project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), jade: { compile: { options: { pretty: true }, files: { "dst/index.html": ["src/jade/index.jade"] } } }, less: { compile: { options: { compress: true, syncimport: true }, files: { "dst/stylesheets/<%= pkg.name %>.min.css": "src/less/jade-de-mock.less" } } }, coffee: { compile: { files: { "dst/javascripts/<%= pkg.name %>.js": "src/coffee/*.coffee" } } }, clean: { build: ["dst"] } }); // load npm tasks. grunt.loadNpmTasks('grunt-contrib-jade'); grunt.loadNpmTasks('grunt-contrib-less'); grunt.loadNpmTasks('grunt-contrib-coffee'); grunt.loadNpmTasks('grunt-contrib-clean'); // define default tasks. grunt.registerTask('default', ['clean', 'jade', 'less', 'coffee']); };これで準備完了。
モックを書く。
ひたすらモックを書く。Jadeを書く。LESSを書く。CoffeeScriptを書く。
ビルドする。
ビルドはGrundコマンドで実行。先ほどのGruntfile.jsにしたがって、タスクが実行される。
$ gruntこれで、dstディレクトリが生成され、次のようなファイルが出力される。
dst/ ├── index.html ├── javascripts │ └── jade-de-mock.js └── stylesheets └── jade-de-mock.min.css
モックを作るたびに使えばいい
と思ってgithubに、
を作っちゃった。
0 件のコメント:
コメントを投稿