Targets(目标环境)1
由于JavaScript可以为服务器和浏览器编写,webpack提供了多个部署targets,你可以在webpack配置里面设置。
⚠️不要混淆webpack的
target
属性和output.libraryTarget
属性。查阅指引获取更多output
属性的信息。
用法
要设置target
属性,你只需要在webpack配置里面设置target
的值:
webpack.config.js
module.exports = {
target: 'node'
};
在上面的例子中,使用node
值,webpack将会按照类Node.js环境进行编译(使用Node.js require
来加载分块,不使用内置模块比如fs
或path
)。
每个target
都有多个部署/环境相关的附加值、支持来满足需求。查看哪些可用的targets。
[TODO] 为其他流行的target值展开更多讨论。
多个targets
虽然webpack不支持向taget
属性传递多个字符串,你可以通过打包两个不同的配置来创建同构(isomorphic)库。
webpack.config.js
var path = require('path');
var serverConfig = {
target: 'node',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'lib.node.js'
}
//…
};
var clientConfig = {
target: 'web', // <=== can be omitted as default is 'web'
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'lib.js'
}
//…
};
module.exports = [ serverConfig, clientConfig ];
上述例子将在dist
目录创建lib.js
和lib.node.js
文件。
资源
从上面的选项可以看到,你能选择多个不同的部署targets。下面是一些你可以参考的样例和资源。
打包输出比较
compare-webpack-target-bundles:一个不错的测试和查看不同webpack targets的工具。欢迎报告bug。
[TODO] 需要在实际代码或样板中找到使用这些webpack targets的最新样例。
1. https://webpack.js.org/concepts/targets/ ↩