比較

Webpack 並不是唯一的模組打包器。如果您正在選擇使用 webpack 或以下任何打包器,以下是 webpack 與目前競爭對手相比的逐項功能比較。

功能webpack/webpackjrburke/requirejssubstack/node-browserifyjspm/jspm-clirollup/rollupbrunch/brunch
依需求載入額外區塊System.import
AMD definedeamdifyrollup-plugin-amd
AMD require
AMD require 依需求載入透過手動設定
CommonJS exports僅封裝在 definecommonjs-plugin
CommonJS require僅封裝在 definecommonjs-plugin
CommonJS require.resolve-
在 require 中串接 require("./fi" + "le")否♦-
偵錯支援SourceUrl、SourceMaps不需要SourceMapsSourceUrl、SourceMapsSourceUrl、SourceMapsSourceMaps
相依性19MB / 127 個套件11MB / 118 個套件1.2MB / 1 個套件26MB / 131 個套件?MB / 3 個套件-
ES2015 import/export (webpack 2)是,透過 es6 模組轉譯器
在 require 中的表達式 (引導) require("./templates/" + template)是 (所有符合的檔案都包含在內)否♦
在 require 中的表達式 (自由) require(moduleName)透過手動設定否♦-
產生單一組合是♦
間接 require var r = require; r("./file")否♦-
個別載入每個檔案
混淆路徑名稱部分不需要 (路徑名稱未包含在組合中)
最小化Terseruglify、closure compileruglifyifyuglify-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)-
外掛程式
預處理載入器載入器轉換器外掛程式翻譯外掛程式轉換器編譯器、最佳化器
瀏覽器替代方案web_modules.web.js、package.json 欄位、別名組態選項別名選項package.json 欄位、別名選項package.json、別名選項-
可要求檔案檔案系統網路檔案系統透過外掛程式檔案系統或透過外掛程式檔案系統
執行時間負擔243B + 每個模組 20B + 每個相依性 4B14.7kB + 每個模組 0B + 每個相依性 (3B + X)415B + 每個模組 25B + 每個相依性 (6B + 2X)自執行套件 5.5kB、完整載入器和多載 38kB、0 個一般模組、293B CJS、139B ES2015 System.register(壓縮前)ES2015 模組無負擔(其他格式可能會有)-
監控模式不需要watchify開發中不需要rollup-watch

♦ 在生產模式中(開發模式中相反)

X 是路徑字串的長度

套件化與載入

注意載入套件化模組之間的一些主要差異非常重要。像 SystemJS 這樣的工具(可以在 JSPM 的底層找到)用於在瀏覽器中載入和轉譯執行時間模組。這與 webpack 有很大的不同,其中模組在進入瀏覽器之前會透過「載入器」轉譯(套件化)。

每種方法都有其優缺點。在執行期間載入和轉譯模組會為包含許多模組的大型網站和應用程式增加許多負擔。因此,SystemJS 對於需要較少模組的小型專案更有意義。不過,這可能會有些改變,因為 HTTP/2 會提升檔案從伺服器傳輸到用戶端的速率。請注意,HTTP/2 沒有改變模組的「轉譯」方式,而這在用戶端執行時總是會花較長的時間。

6 貢獻者

pksjcebebrawchrisVillanuevatashiansimon04byzyk