DllPlugin

DllPluginDllReferencePlugin 提供分割套件的方法,可以大幅提升建置時間效能。術語「DLL」代表動態連結函式庫,最初由 Microsoft 推出。

DllPlugin

此外掛用於獨立的 webpack 設定中,專門用於建立 dll-only-bundle。它會建立一個 manifest.json 檔案,供 DllReferencePlugin 用來對應相依性。

  • context(選用):manifest 檔案中要求的內容(預設為 webpack 內容)
  • format(布林值 = false):如果為 true,manifest json 檔案(輸出)會以格式化方式呈現。
  • name:公開的 dll 函式名稱(TemplatePaths[fullhash][chunkhash][contenthash][name]
  • path絕對路徑,指向 manifest json 檔案(輸出)
  • entryOnly(布林值 = true):如果為 true,只會公開進入點
  • type:dll 套件類型
new webpack.DllPlugin(options);

建立一個寫入指定 pathmanifest.json。它包含從 require 和 import 要求到模組 ID 的對應。它由 DllReferencePlugin 使用。

將此外掛程式與 output.library 選項結合,以公開(亦即,放入全域範圍)dll 函式。

DllReferencePlugin

此外掛程式用於主要的 webpack 設定檔,它參照僅限 dll 的套件,以要求預先建置的依賴項。

  • context: (絕對路徑) 明細中要求的內容 (或內容屬性)
  • extensions: 用於解析 dll 套件中模組的副檔名 (僅在使用「範圍」時使用)。
  • manifest : 包含 contentname 的物件,或指向編譯時要載入的 JSON 明細的絕對路徑的字串
  • content (選用): 從要求到模組 ID 的對應 (預設為 manifest.content)
  • name (選用): dll 公開的識別碼 (預設為 manifest.name) (另請參閱 externals)
  • scope (選用): 用於存取 dll 內容的前置詞
  • sourceType(選用):dll 的公開方式(libraryTarget
new webpack.DllReferencePlugin(options);

參照 dll 清單檔案,將相依名稱對應到模組 ID,然後使用內部 __webpack_require__ 函式視需要載入。

模式

此外掛程式可以使用兩種不同的模式,範圍對應

範圍模式

dll 的內容可以在模組前綴下存取。例如,如果 scope = 'xyz',dll 中的檔案 abc 可以透過 require('xyz/abc') 存取。

對應模式

dll 的內容對應到目前目錄。如果需要的檔案與 dll 中的檔案相符(解析後),則會改用 dll 中的檔案。

由於這是在解析 dll 捆綁中的每個檔案後才執行,因此 dll 捆綁的使用者必須可以使用相同的路徑。例如,如果 dll 包含 lodash 和檔案 abc,則會從 dll 使用 require('lodash')require('./abc'),而不是將它們建置到主捆綁中。

用法

webpack.vendor.config.js

const path = require('path');

new webpack.DllPlugin({
  context: __dirname,
  name: '[name]_[fullhash]',
  path: path.join(__dirname, 'manifest.json'),
});

webpack.app.config.js

new webpack.DllReferencePlugin({
  context: __dirname,
  manifest: require('./manifest.json'),
  scope: 'xyz',
  sourceType: 'commonjs2',
});

範例

供應商使用者

兩個獨立的範例資料夾。展示範圍和內容。

參考

來源

測試

進一步閱讀

9 貢獻者

aretecodesokraopiepjsimon04skipjackbyzykEugeneHlushkoEslamHikosnitin315