[webpack] webpack 2 入門: まとめと目次
何度かに分けて webpack を調査した記事のまとめと目次です。
Contents
この連載記事のゴール
以下の機能を yarn/webpack で組み立てます。
- JavaScript … JS bundle, Babel
- CSS … Sass, PostCSS
- Lint … ESLint
- Server … webpack-dev-server
これらは Middleman, _S(Iemoto) への適用を想定するなど、筆者の個人的な要件に沿っています。
そのため、ここでは以下の技術には触れません。
- Task Runner … Grunt, gulp etc.
- Templating … Jade, Handlebars etc.
- Test … mocha etc.
- Frameworks … React, AngularJS etc.
但し、将来的に採用技術が変わることもあり得ますので、他の環境でも応用できるよう分かりやすい単位で分割しました。
ソースと対応バージョン
後で参照しやすいように、成果物は下記に上げました。
また各記事にも、そこまでの差分へのリンクがあります。
対応バージョンは、以下の通りです。
% yarn --version
0.24.6
% $(yarn bin)/webpack --version
2.6.1
目次
チュートリアル形式となっているので、順を追って進めると概要が把握できるようにまとめています。
単体で取り出してもほぼ機能するはずです。
- bundle の仕組み
- debug, sourcemap, uglify, watch
- babel による JavaScript のトランスパイル
- eslint-loader で ESLint する
- HtmlWebpackPlugin を利用して表示 HTML を自動生成する
- CSS や image を bundle する
- ProvidePlugin で依存するライブラリを autoload する
- Extract Text Plugin で CSS ファイルを出力する
- sass-loader で scss ファイルを扱う
- postcss-loader で PostCSS plugin を利用する
- webpack-dev-server で LiveReload & Watch 対応のサーバをたてる
- まとめと目次
参考ソース・補足情報
公式
現在のバージョンは webpack 2 となっています。
ネット上の少し古めの情報は v1 のことが多く、微妙に違う部分があるので注意が必要です。
そしてこれらの記事のポスト中に v3.0.0 RC のアナウンス がありました。
アウトラインをつかむためのポイント
取り組み始めた当初は webpack の特徴をつかんでおらず混乱していました。
こちらの記事を読むことで理解が進みました。
- webpack は、JavaScript も CSS も image なども含め「 全てのデータを JavaScript の module として扱い、これらを bundle する 」という振る舞いが基本である。
- Loader は、ECMAScript2015 や Sass など「 webpack が扱える形式を増やしたい 」場合に利用される。
- Plugin は、ファイル出力など「 それ以外の機能を差し込みたい 」場合に利用される。
解釈に間違いがあればごめんなさい。
ちなみに loader 間のデータの受け渡しは、JSON 形式だそうです。
ドキュメントの読み方
公式のドキュメントやネット上の情報を調べると、書き方がまちまちで混乱することがありました。
v1 -> v2 の読み替えや webpack.config.js
の記述にあたり、こちらの情報が大変参考になりました。
(なかのひとでした。ありがとうございました。)
所感
webpack で *-loader をいろいろ追加すると負債が膨らむ感じがする。
極力シンプルにして、付加的な機能は npm scripts から直接実行する設計が良さそう。— DriftwoodJP (@DriftwoodJP) June 21, 2017