部署目标(target)

|

因为服务器和浏览器代码都可以用 JavaScript 编写,所以 webpack 提供了多种部署 target(目标),你可以在你的 webpack 配置对象 中进行设置。

webpack 的 target 属性,不要和 output.libraryTarget 属性混淆。有关 output 属性的更多信息,请查看我们的 指南

用法

想要设置 target 属性,只需要在你的 webpack 配置中设置 target 的值。

webpack.config.js

  1. module.exports = {
  2. target: 'node'
  3. };

在上面例子中,使用 node,webpack 会编译为用于类 Node.js 环境(使用 Node.js 的 require ,而不是使用任意内置模块(如 fspath)来加载 chunk)。

每个 target 都有各种部署(deployment)/环境(environment)特定的附加项,以支持满足其需求。查看 target 可用值

Further expansion for other popular target values

多个 target

虽然 webpack 不支持target 传入多个字符串,还是可以通过打包两个单独配置,来创建出一个同构的 library:

webpack.config.js

  1. const path = require('path');
  2. const serverConfig = {
  3. target: 'node',
  4. output: {
  5. path: path.resolve(__dirname, 'dist'),
  6. filename: 'lib.node.js'
  7. }
  8. //…
  9. };
  10. const clientConfig = {
  11. target: 'web', // <=== 默认是 'web',可省略
  12. output: {
  13. path: path.resolve(__dirname, 'dist'),
  14. filename: 'lib.js'
  15. }
  16. //…
  17. };
  18. module.exports = [ serverConfig, clientConfig ];

上面的例子将在 dist 文件夹下创建 lib.jslib.node.js 文件。

资源

从上面的选项能够看出,可以选择多种不同的部署 target。下面是一个示例列表,以及可以参考的资源。

Need to find up to date examples of these webpack targets being used in live code or boilerplates.


贡献人员

EugeneHlushko EugeneHlushko TheLarkInn TheLarkInn byzyk byzyk johnstew johnstew rouzbeh84 rouzbeh84 srilman srilman