DllPlugin
和 DllReferencePlugin
提供分割套件的方法,可以大幅提升建置時間效能。術語「DLL」代表動態連結函式庫,最初由 Microsoft 推出。
此外掛用於獨立的 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);
建立一個寫入指定 path
的 manifest.json
。它包含從 require 和 import 要求到模組 ID 的對應。它由 DllReferencePlugin
使用。
將此外掛程式與 output.library
選項結合,以公開(亦即,放入全域範圍)dll 函式。
此外掛程式用於主要的 webpack 設定檔,它參照僅限 dll 的套件,以要求預先建置的依賴項。
context
: (絕對路徑) 明細中要求的內容 (或內容屬性)extensions
: 用於解析 dll 套件中模組的副檔名 (僅在使用「範圍」時使用)。manifest
: 包含 content
和 name
的物件,或指向編譯時要載入的 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',
});
兩個獨立的範例資料夾。展示範圍和內容。