99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Webpack 構(gòu)建目標(biāo)(Targets)

2023-05-16 14:57 更新

webpack 能夠?yàn)槎喾N環(huán)境或 target 構(gòu)建編譯。想要理解什么是 ?target? 的詳細(xì)信息, 請(qǐng)閱讀 target 概念頁面。

target

?string? ?[string]? ?false?

告知 webpack 為目標(biāo)(target)指定一個(gè)環(huán)境。默認(rèn)值為 ?"browserslist"?,如果沒有找到 browserslist 的配置,則默認(rèn)為 ?"web"?。

string

通過 WebpackOptionsApply, 可以支持以下字符串值:

選項(xiàng) 描述
async-node 編譯為類 Node.js 環(huán)境可用(使用 fs 和 vm 異步加載分塊)
electron-main 編譯為 Electron 主進(jìn)程。
electron-renderer 編譯為 Electron 渲染進(jìn)程,使用 JsonpTemplatePlugin,
FunctionModulePlugin 來為瀏覽器環(huán)境提供目標(biāo),使用 NodeTargetPlugin 和 ExternalsPlugin
為 CommonJS 和 Electron 內(nèi)置模塊提供目標(biāo)。
electron-preload 編譯為 Electron 渲染進(jìn)程,
使用 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)入(實(shí)驗(yàn)性質(zhì))
nwjs[[X].Y] 等價(jià)于 node-webkit
web 編譯為類瀏覽器環(huán)境里可用 (默認(rèn))
webworker 編譯成一個(gè) WebWorker
esX 編譯為指定版本的 ECMAScript。例如,es5,es2020
browserslist 從 browserslist-config 中推斷出平臺(tái)和 ES 特性 (如果 browserslist 可用,其值則為默認(rèn))

例如,當(dāng) target 設(shè)置為 ?"electron-main"?,webpack 引入多個(gè) electron 特定的變量。

可指定 node 或者 electron 的版本。上表中使用 ?[[X].Y]? 表示。

webpack.config.js

module.exports = {
  // ...
  target: 'node12.18',
};

它有助于確定可能用于生成運(yùn)行時(shí)代碼的 ES 特性(所有的 chunk 和模塊都被運(yùn)行時(shí)代碼所包裹)

browserslist

如果一個(gè)項(xiàng)目有 browserslist 配置,那么 webpack 將會(huì)使用它:

  • 確定可用于運(yùn)行時(shí)代碼的 ES 特性。
  • 推斷環(huán)境(例如:last 2 node versions 等價(jià)于 target: node,并會(huì)進(jìn)行一些 output.environment 設(shè)置).

支持的 browserslist 值:

  • ?browserslist? - 使用自動(dòng)解析的 browserslist 配置和環(huán)境(從最近的 package.json 或 BROWSERSLIST 環(huán)境變量中獲取,具體請(qǐng)查閱 browserslist 文檔
  • ?browserslist:modern? - 使用自動(dòng)解析的 browserslist 配置中的 modern 環(huán)境
  • ?browserslist:last 2 versions? - 使用顯式 browserslist 查詢(配置將被忽略)
  • ?browserslist:/path/to/config? - 明確指定 browserslist 配置路徑
  • ?browserslist:/path/to/config:modern? - 明確指定 browserslist 的配置路徑和環(huán)境

[string]

當(dāng)傳遞多個(gè)目標(biāo)時(shí),將使用共同的特性子集:

webpack.config.js

module.exports = {
  // ...
  target: ['web', 'es5'],
};

Webpack 將生成 web 平臺(tái)的運(yùn)行時(shí)代碼,并且只使用 ES5 相關(guān)的特性。

目前并不是所有的 target 都可以進(jìn)行混合。

webpack.config.js

module.exports = {
  // ...
  target: ['web', 'node'],
};

此時(shí)會(huì)導(dǎo)致錯(cuò)誤。webpack 暫時(shí)不支持 universal 的 target。

false

如果上述列表中的預(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 特性的信息時(shí),將默認(rèn)使用 ES2015。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)