W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
webpack 能夠為多種環(huán)境或 target 構(gòu)建編譯。想要理解什么是 ?target
? 的詳細信息, 請閱讀 target 概念頁面。
?string
? ?[string]
? ?false
?
告知 webpack 為目標(biāo)(target)指定一個環(huán)境。默認值為 ?"browserslist"
?,如果沒有找到 browserslist 的配置,則默認為 ?"web"
?。
通過 WebpackOptionsApply, 可以支持以下字符串值:
選項 | 描述 |
---|---|
async-node
|
編譯為類 Node.js 環(huán)境可用(使用 fs 和 vm 異步加載分塊) |
electron-main
|
編譯為 Electron 主進程。 |
electron-renderer
|
編譯為 Electron 渲染進程,使用 JsonpTemplatePlugin , |
FunctionModulePlugin 來為瀏覽器環(huán)境提供目標(biāo),使用 NodeTargetPlugin 和 ExternalsPlugin
|
|
為 CommonJS 和 Electron 內(nèi)置模塊提供目標(biāo)。 | |
electron-preload
|
編譯為 Electron 渲染進程, |
使用 NodeTemplatePlugin 且 asyncChunkLoading 設(shè)置為 true ,FunctionModulePlugin 來為瀏覽器提供目標(biāo),使用 NodeTargetPlugin 和 ExternalsPlugin 為
CommonJS 和 Electron 內(nèi)置模塊提供目標(biāo)。 |
|
node
|
編譯為類 Node.js 環(huán)境可用(使用 Node.js require 加載 chunks) |
node-webkit
|
編譯為 Webkit 可用,并且使用 jsonp 去加載分塊。支持 Node.js 內(nèi)置模塊和 nw.gui
|
導(dǎo)入(實驗性質(zhì)) | |
nwjs[[X].Y]
|
等價于 node-webkit
|
web
|
編譯為類瀏覽器環(huán)境里可用 (默認) |
webworker
|
編譯成一個 WebWorker |
esX
|
編譯為指定版本的 ECMAScript。例如,es5,es2020 |
browserslist
|
從 browserslist-config 中推斷出平臺和 ES 特性 (如果 browserslist 可用,其值則為默認) |
例如,當(dāng) target 設(shè)置為 ?"electron-main"
?,webpack 引入多個 electron 特定的變量。
可指定 node 或者 electron 的版本。上表中使用 ?[[X].Y]
? 表示。
webpack.config.js
module.exports = {
// ...
target: 'node12.18',
};
它有助于確定可能用于生成運行時代碼的 ES 特性(所有的 chunk 和模塊都被運行時代碼所包裹)
如果一個項目有 browserslist 配置,那么 webpack 將會使用它:
支持的 browserslist 值:
browserslist
? - 使用自動解析的 browserslist 配置和環(huán)境(從最近的 package.json 或 BROWSERSLIST 環(huán)境變量中獲取,具體請查閱 browserslist 文檔)browserslist:modern
? - 使用自動解析的 browserslist 配置中的 modern 環(huán)境browserslist:last 2 versions
? - 使用顯式 browserslist 查詢(配置將被忽略)browserslist:/path/to/config
? - 明確指定 browserslist 配置路徑browserslist:/path/to/config:modern
? - 明確指定 browserslist 的配置路徑和環(huán)境當(dāng)傳遞多個目標(biāo)時,將使用共同的特性子集:
webpack.config.js
module.exports = {
// ...
target: ['web', 'es5'],
};
Webpack 將生成 web 平臺的運行時代碼,并且只使用 ES5 相關(guān)的特性。
目前并不是所有的 target 都可以進行混合。
webpack.config.js
module.exports = {
// ...
target: ['web', 'node'],
};
此時會導(dǎo)致錯誤。webpack 暫時不支持 universal 的 target。
如果上述列表中的預(yù)設(shè) target 都不符合你的需求,你可以將 target 設(shè)置為 false,這將告訴 webpack 不使用任何插件。
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'),
],
};
當(dāng)沒有提供 target 或 environment 特性的信息時,將默認使用 ES2015。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: