LoginSignup
166
147

More than 5 years have passed since last update.

webpack のチュートリアルをやってみる

Last updated at Posted at 2014-11-27

大鑑巨砲主義らしくいろいろな機能があるみたいだけど、とりあえずサラッとチュートリアルをやってみる。

webpack インストール

$ npm install webpack -g

ファイルを作成その1

$ mkdir tutorial
$ cd tutorial
$ emacs entry.js
document.write("It works.");
$ emacs index.html
<!doctype html>
<html lang="ja">
    <head>
        <meta charset="utf-8">
        <title>webpack tutorial</title>
    </head>
    <body>
        <script src="bundle.js"></script>
    </body>
</html>

コンパイルしてバンドルするファイルを作成する

$ webpack ./entry.js bundle.js

ブラウザで index.html を表示

スクリーンショット 2014-11-28 0.32.19.png

ファイルを作成その2

$ emacs content.js
module.exports = "It works from content.js.";

entry.js を修正する

$ emacs entry.js
document.write(require("./content.js"));

再コンパイルする

$ webpack ./entry.js bundle.js

ブラウザで index.html を表示

スクリーンショット 2014-11-28 0.36.55.png

ローダーを使う

インストール

$ npm install css-loader style-loader

ファイル作成

$ emacs style.css
body {
    background: yellow;
}

entry.js を修正する

$ emacs entry.js
require("!style!css!./style.css");
document.write(require("./content.js"));

再コンパイルする

$ webpack ./entry.js bundle.js

ブラウザで index.html の表示

スクリーンショット 2014-11-28 0.46.05.png

require("./style.css") と書けるようにする

entry.js を修正する

$ emacs entry.js
require("./style.css");
document.write(require("./content.js"));

オプションを付けて再コンパイルする

$ webpack ./entry.js bundle.js --module-bind 'css=style!css'

ブラウザで index.html の表示

スクリーンショット 2014-11-28 0.46.05.png

設定ファイルを書いて webpack コマンドのみで再コンパイル

$ emacs webpack.config.js
/* global module, __dirname */

module.exports = {
    entry: "./entry.js",
    output: {
        path: __dirname,
        filename: "bundle.js"
    },
    module: {
        loaders: [
            { test: /\.css$/, loader: "style!css" }
        ]
    }
};

コンパイルする

$ webpack

オプションでプログレスバーや色づけ表示

$ webpack --progress --colors

スクリーンショット 2014-11-28 0.52.37.png

ファイルを監視してコンパイルを自動化

$ webpack --progress --colors --watch

開発サーバ

--watch でファイル監視ではなく、開発サーバを起動してコンパイル自動化もできる。

インストール

$ npm install webpack-dev-server -g

開発サーバ起動

$ webpack-dev-server --progress --colors

次は

参考リンク

大鑑巨砲主義
設定はもちろん分厚くなるが、分割ビルドは魅力的

【第1部】CommonJSの簡単なサンプル
【第2部】Bootstrapを使ったサンプル
【第3部】AngularJSのサンプル
【第4部】CoffeeScriptやLESS、Jadeを使ったサンプル
【第5部】コードスプリット
【第6部】production/develが最適化されたサンプル
【第7部】EcmaScript 6のサンプル

Webpackの特徴としては、
- コード分割
- requireの使い方で、AMDのような非同期のロードもサポート
- Loaderという読み込み時に適用するプラグイン
- require時に変数が入っていてもパースできるような、賢いパース
- Pluginによる拡張

Browserifyが 単一ファイル を作成するのに特化していたのと比較して、Webpackは 複数ファイルを出力すること を念頭に置いている

一回(もしくはwatchの初回)のビルド時間
Browserify => 3〜4分
Webpack => 14〜16秒(!)

166
147
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
166
147