
8.3
クロスプラットフォーム開発の基礎
261
な方法がない(変数が定数である場合を除いて)という事実が原因です。そのため、
require
している
コードが実行されるかどうかにかかわらず、すべてのモジュールが取り込まれてしまうのです。
逆に、変数を使って動的に
require
されるモジュールはバンドルに取り込まれません。たとえば次の
ようなコードからは、モジュールがひとつもバンドルされません。
moduleList.forEach(function(module) {
require(module);
});
Webpack
はこうした制限のいくつかを克服しており、ある特定の状況下では動的読み込みの可能性
のあるものを推定できる点は強調に値するでしょう。たとえば、次のようなコードがあったとします。
function getController(controllerName) {
return require("
./controller/" + controllerName);
}
この場合はフォルダ
controller
内にあるすべてのモジュールが取り込まれます。
公式ドキュメントを見て、どのような場合がサポートされているかを理解しておくことを、強く勧め
ます。
8.3.2
ビルド時のコード分岐
この節では、
Webpack
を使って、コードの中でサーバだけが使う部分をビルド時にすべて除去する
方法を見ていきます。そうすることで、より軽いバンドルファイルが得られ、サーバ内でしか使われる
べきでない人目に晒したくないコ