はじめに
今までgulp
を使って自動で.js
やら.scss
をコンパイルするようにしていたが、今回はよく耳にするwebpack
を使って開発環境を作ってみたお話。(最近触り始めてかなり気に入っている)
もちろんgulp-*
モジュールをフルに使えばできることだが、webpack
の方が圧倒的に楽らしい。
※1 gulp-webpack
というモジュールを使ってgulp
だけで全て解決することも可能。
※2 今回作った環境構築用のソースコードはこちら。かなり簡単なものじゃね。
※3 この記事はいわゆるhow-to
ではないので、それが目的の方は別の方の記事を探してみて下さい。
具体的にやりたかったことは、最近はもっぱらテンプレートとしてjade
を利用しているため、jade
のままriotのコンパイルにかけたい。ついでに一つのjsファイルとして出力したい。
それを簡単にできたら良いなと。
使ったモジュールリスト
今回npm
からインストールしたモジュールはこちら。
- riot
- gulp
- webpack
- webpack-dev-server
- jade
- tag-loader
package.json
の記述はこんな感じ。
{ "name": "riot-webpack", "main" : "build/bundle.js", "scripts": { "start": "webpack-dev-server --progress --colors -d --port 8000" }, "dependencies": { "riot" : "^2.6.2", "webpack": "^1.13.2" }, "devDependencies": { "tag-loader": "^0.3.0", "jade" : "^1.11.0", "webpack-dev-server": "^1.16.1" } }
webpack
の設定
webpack.config.js
は以下。
var webpack = require('webpack') module.exports = { entry: './src/main.js', output: { path: __dirname + '/build', filename: 'bundle.js' }, devServer: { port: 8000 }, module: { loaders: [ { test: /\.tag$/, exclude: /node_modules/, loader: 'tag-loader', query: { template: 'jade', presets: ['es6'] } } ] } }
とりあえずの勉強段階なので物凄くシンプルなものにしたが、これでもgulp
との差が出ている。
webpack | gulp | |
---|---|---|
設定ファイル | webpack.config.js | gulpfile.js |
記述量 | 短め | ガチでやると長め |
記述の仕方 | JSON形式 | gulpの仕様に沿ったjavascript |
実行速度 | そんなに変わらない | ただ、今は簡単な事しかやらせてない |
自動更新設定 | コマンドから実行可能 | gulpfile.jsに記載する必要がある |
build時間 | デフォルトで表示 | 別途設定する必要がある |
最後のbuildにかかる時間の表示はいらないといえばいらないが、速度の比較をする上ではありがたかった。
さらにJSON形式
というのが分かりやすくてGood。使った感想は正直webpackの方が今のところ使いやすく、良いなぁといった感じ。
今後の課題
今回はまだ触り程度なので、今後やりたいことはこんなところ
sass-loader
等を使って.scss
ファイルをコンパイル- 更にコンパイルした書くcssファイルを一つのcssファイルに出力
- 更に
.js
,.css
ファイルをminify - 本番でも使えるようにファイル構成を考える(あんまイメージができない…)
- どこまでをバンドルするかの具体例
終わりに
もはやwebpack
はグローバルインストールした方が良い。ガチで。
自分はまだまーだ初心者丸出しだと思うけんもっと触ってみるが、現時点で`gulpより楽だし使ってて楽しい(?)感じ。
何かオススメの使い方があれば是非是非ご教示願います! では。