Webpack 可以为多个环境或目标编译。要详细了解目标
是什么,请阅读目标概念页面。
字符串
[字符串]
false
指示 webpack 为特定环境生成运行时代码。请注意,webpack 运行时代码与您编写的用户代码不同,如果您想针对特定环境,则应使用 Babel 等转译器来转译这些代码,例如,您的源代码中包含箭头函数,并且您想在 ES5 环境中运行捆绑的代码。Webpack 不会使用配置的目标
自动转译它们。
默认值为'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 配置中推断平台和 ES 功能 (如果 browserslist 配置可用,则为默认值) |
例如,当 target
设置为 "electron-main"
时,webpack 会包含多个特定于 electron 的变量。
可选地可以指定 node
或 electron
的版本。这在上面的表格中用 [[X].Y]
表示。
webpack.config.js
module.exports = {
// ...
target: 'node12.18',
};
它有助于确定可用于生成运行时代码的 ES 功能(所有块和模块都由运行时代码包装)。
如果项目有 browserslist 配置,那么 webpack 将使用它来
last 2 node versions
与 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。