比較

Webpackは唯一のモジュールバンドラーではありません。Webpackと下記のバンドラーのどちらを使用するかを選択する際に、Webpackが現在の競合他社とどのように比較されるかを示す機能別の比較を示します。

機能webpack/webpackjrburke/requirejssubstack/node-browserifyjspm/jspm-clirollup/rollupbrunch/brunch
追加のチャンクはオンデマンドでロードされますはいはいいいえSystem.importいいえいいえ
AMD defineはいはいdeamdifyはいrollup-plugin-amdはい
AMD requireはいはいいいえはいいいえはい
AMD requireはオンデマンドでロードされますはい手動構成でいいえはいいいえいいえ
CommonJS exportsはいdefineでラップするだけはいはいcommonjs-pluginはい
CommonJS requireはいdefineでラップするだけはいはいcommonjs-pluginはい
CommonJS require.resolveはいいいえいいえいいえいいえ-
require内での連結 require("./fi" + "le")はいいいえ♦いいえいいえいいえ-
デバッグサポートSourceUrl、ソースマップ不要ソースマップSourceUrl、ソースマップSourceUrl、ソースマップソースマップ
依存関係19MB / 127パッケージ11MB / 118パッケージ1.2MB / 1パッケージ26MB / 131パッケージ?MB / 3パッケージ-
ES2015 import/exportはい (webpack 2)いいえいいえはいはいはい、es6 module transpiler経由
requireでの式(ガイド付き)require("./templates/" + template)はい(含まれるすべてのファイルに一致)いいえ♦いいえいいえいいえいいえ
requireでの式(自由)require(moduleName)手動構成でいいえ♦いいえいいえいいえ-
単一のバンドルを生成するはいはい♦はいはいはいはい
間接的なrequire var r = require; r("./file")はいいいえ♦いいえいいえいいえ-
各ファイルを個別にロードするいいえはいいいえはいいいえいいえ
パス名を変更するはいいいえ部分的はい不要(パス名はバンドルに含まれていません)いいえ
最小化Terseruglify、closure compileruglifyifyはいuglify-pluginUglifyJS-brunch
共通バンドルを含む複数ページビルド手動構成ではい手動構成でバンドル算術でいいえいいえ
複数のバンドルはい手動構成で手動構成ではいいいえはい
Node.js組み込みライブラリ require("path")はいいいえはいはいnode-resolve-plugin-
その他のNode.js関連process、__dir/filename、global-process、__dir/filename、globalprocess、__dir/filename、global(cjsの場合)global(commonjs-plugin-
プラグインはいはいはいはいはいはい
前処理ローダーローダー変換plugin translateplugin transformsコンパイラ、オプティマイザ
ブラウザの代替web_modules.web.js、package.jsonフィールド、エイリアス設定オプションエイリアスオプションpackage.jsonフィールド、エイリアスオプションpackage.json、エイリアスオプションいいえ-
読み込み可能なファイルファイルシステムウェブファイルシステムプラグイン経由ファイルシステムまたはプラグイン経由ファイルシステム
ランタイムオーバーヘッド243B + 20B/モジュール + 4B/依存関係14.7kB + 0B/モジュール + (3B + X)/依存関係415B + 25B/モジュール + (6B + 2X)/依存関係自己実行バンドルの場合5.5kB、フルローダーとポリフィルの場合38kB、プレーンモジュールは0、CJSは293B、gzip前のES2015 System.registerは139BES2015モジュールの場合なし(他の形式にはある可能性があります)-
ウォッチモードはい不要watchify開発では不要rollup-watchはい

♦本番モードの場合(開発モードでは逆)

Xはパス文字列の長さです

バンドル vs. ローディング

モジュールのローディングバンドリングの間にはいくつかの重要な違いがあることに注意することが重要です。SystemJSJSPMの内部で使用されている)のようなツールは、ブラウザで実行時にモジュールをロードしてトランスパイルするために使用されます。これは、モジュールが「ローダー」を介してトランスパイルされ、ブラウザに到達する前にバンドルされるWebpackとは大きく異なります。

それぞれに長所と短所があります。実行時にモジュールをロードしてトランスパイルすると、多くのモジュールで構成される大規模なサイトやアプリケーションでは大きなオーバーヘッドが発生する可能性があります。このため、SystemJSは、必要なモジュールが少ない小規模なプロジェクトの方が理にかなっています。ただし、HTTP/2により、ファイルがサーバーからクライアントに転送される速度が向上するため、これは多少変化する可能性があります。HTTP/2はモジュールのトランスパイルについては何も変更しません。クライアント側で行う場合は、常に時間がかかります。

6 貢献者

pksjcebebrawchrisVillanuevatashiansimon04byzyk