【うぇぶぱっく】

Webpack とは?

最終更新:
💡 依存するモジュールを配信用にまとめる

JavaScriptアプリの入口から依存関係をたどり、必要なモジュールをバンドルなどの配信用ファイルへまとめるツール。loaderやpluginで処理を拡張でき、出力を複数に分けるコード分割にも対応する。

📌 このページのポイント
モジュールから配信用ファイルへ 依存するソース.js.css.ts.pngWebpack依存関係を解析loaderで変換pluginで拡張配信用ファイルの例main.jschunk.js画像必要に応じて複数に分けて出力する
既存の入力→処理→出力を活かした図。青は入力、橙はビルド処理、緑は出力。折り返し矢印が処理の流れを示す。ファイル名と分割は説明用の例で、CSSや画像の扱い、出力数は設定によって変わる。1ファイル化や読み込み速度を保証しない。
ひよこ ひよこ
Webpackって何のために使うの?
ペンギン先生 ペンギン先生
アプリの入口からimportなどの依存関係をたどり、必要なモジュールを配信用のファイルにまとめるよ。ファイルの文章をただ順番に連結するだけでなく、モジュール同士のつながりを扱うんだ。
ひよこ ひよこ
全部1つのファイルになるの?
ペンギン先生 ペンギン先生
1つ以上のバンドルになるよ。コード分割で複数に分け、必要になったときや並列に読み込む構成も作れる。ファイル数を減らせば必ず速くなるわけではなく、最初に読む量やキャッシュも考えて構成するんだ。
ひよこ ひよこ
loaderとpluginはどう違うの?
ペンギン先生 ペンギン先生
loaderは特定の種類のファイルをモジュールとして使える形へ変換するものだよ。TypeScriptなどの変換にも使える。pluginはバンドルの最適化やアセット管理など、ビルド全体に関わる広い処理を拡張するんだ。
ひよこ ひよこ
設定ファイルがないと使えない?
ペンギン先生 ペンギン先生
基本の入口や出力には既定値があり、設定ファイルなしでバンドルすることもできるよ。入力や出力、変換処理を変えたいときはwebpack.config.jsなどで設定する。必要な設定はアプリの構成によって違うんだ。
ひよこ ひよこ
開発中のホットリロードって何?
ペンギン先生 ペンギン先生
HMRはページ全体を再読み込みせず、実行中のモジュールを更新する仕組みだよ。webpack-dev-serverで利用できる。ただし変更を受け入れる処理などが必要で、対応できない変更ではページの再読み込みになることもあるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Webpack」って出てきたら「依存するモジュールを配信用にまとめるツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「webpack」 = Webとpack(まとめる)を連想する名前
💬 Webで使うモジュールをまとめる役割と結び付けると覚えやすいよ。

参考資料

← 用語集にもどる