Webpack 可以針對多個環境或目標進行編譯。如要詳細了解什麼是target
,請閱讀目標概念頁面。
字串
[字串]
false
指示 webpack 為特定環境產生執行時期程式碼。請注意,webpack 執行時期程式碼與您編寫的使用者程式碼不同,如果您想針對特定環境,您應該使用 Babel 等轉譯器轉譯這些程式碼,例如,您的原始程式碼中有箭頭函式,且您想在 ES5 環境中執行已套件的程式碼。Webpack 沒有辦法在設定了target
的情況下自動轉譯這些程式碼。
預設為 'browserslist'
或是在找不到 browserslist 設定時為 'web'
。
以下字串值透過 WebpackOptionsApply
獲得支援
選項 | 說明 |
---|---|
async-node[[X].Y] | 編譯以用於類似 Node.js 的環境(使用 fs 和 vm 非同步載入區塊) |
electron[[X].Y]-main | 編譯以用於 Electron 的主程序。 |
electron[[X].Y]-renderer | 編譯以用於 Electron 的渲染程序,提供一個使用 JsonpTemplatePlugin 、FunctionModulePlugin (用於瀏覽器環境)和 NodeTargetPlugin 、ExternalsPlugin (用於 CommonJS 和 Electron 內建模組)的目標。 |
electron[[X].Y]-preload | 編譯以用於 Electron 的渲染程序,提供一個使用 NodeTemplatePlugin (將 asyncChunkLoading 設為 true )、FunctionModulePlugin (用於瀏覽器環境)和 NodeTargetPlugin 、ExternalsPlugin (用於 CommonJS 和 Electron 內建模組)的目標。 |
node[[X].Y] | 編譯以用於類似 Node.js 的環境(使用 Node.js require 載入區塊) |
node-webkit[[X].Y] | 編譯以用於 WebKit,並使用 JSONP 載入區塊。允許匯入內建的 Node.js 模組和 nw.gui (實驗性質) |
nwjs[[X].Y] | 與 node-webkit 相同 |
web | 編譯以用於類似瀏覽器的環境 (預設) |
webworker | 編譯為 WebWorker |
esX | 編譯為指定的 ECMAScript 版本。範例:es5、es2020。 |
browserslist | 從 browserslist-config 推斷平台和 ES 功能 (如果 browserslist config 可用,則為預設) |
例如,當 target
設為 "electron-main"
時,webpack 會包含多個特定於 electron 的變數。
可以選擇指定 node
或 electron
的版本。這在上表中以 [[X].Y]
表示。
webpack.config.js
module.exports = {
// ...
target: 'node12.18',
};
它有助於確定可能用於產生執行時期程式碼的 ES 功能(所有區塊和模組都由執行時期程式碼包裝)。
如果專案有 browserslist 設定檔,webpack 將會用於
最後 2 個節點版本
與 target: "node"
相同,並帶有一些 output.environment
設定)。支援的 browserslist 值
browserslist
- 使用自動解析的 browserslist 設定檔和環境(來自最近的 package.json
或 BROWSERSLIST
環境變數,請參閱 browserslist 文件 以取得詳細資訊)browserslist:modern
- 使用自動解析的 browserslist 設定檔中的 modern
環境browserslist:last 2 versions
- 使用明確的 browserslist 查詢(將會忽略設定檔)browserslist:/path/to/config
- 明確指定 browserslist 設定檔browserslist:/path/to/config:modern
- 明確指定 browserslist 設定檔和環境如果傳遞多個目標,將會使用功能的共同子集
webpack.config.js
module.exports = {
// ...
target: ['web', 'es5'],
};
Webpack 將會為 Web 平台產生執行時期程式碼,而且只會使用 ES5 功能。
目前並非所有目標都能夠混合。
webpack.config.js
module.exports = {
// ...
target: ['web', 'node'],
};
將會造成錯誤。Webpack 目前不支援通用目標。
如果上述清單中沒有任何預先定義的目標符合您的需求,請將 target
設定為 false
,不會套用任何外掛程式。
webpack.config.js
module.exports = {
// ...
target: false,
};
或者你可以套用你想要的特定外掛
webpack.config.js
const webpack = require('webpack');
module.exports = {
// ...
target: false,
plugins: [
new webpack.web.JsonpTemplatePlugin(options.output),
new webpack.LoaderTargetPlugin('web'),
],
};
當沒有提供關於目標或環境功能的資訊時,ES2015 將會被使用。