您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

WebPack 多种配置类型

WebPack 多种配置类型

除了导出单个配置对象,还有一些方式满足其他需求。

导出为

最终,你会发现需要在开发和生产构建之间,消除 webpack.con.js 的差异。(至少)有两种选项:

作为导出配置对象的替代,还有一种可选的导出方式是,从 webpack 中导出。该在时,可传入两个参数:

环境对象(environment)作为第参数。有关语法示例,请查看CLI 文档的环境选项。 选项 map 对象(argv)作为第二个参数。这个对象描述了传递给 webpack 的选项,并且具有 output-filename 和 optimize-minimize 等 key。

-module.exports = {
+module.exports = function(env, argv) {
+  return {
+    mode: env.production ? 'production' : 'development',
+    devtool: env.production ? 'source-maps' : 'eval',
     plugins: [
       new webpack.optimize.UglifyJsPlugin({
+        compress: argv['optimize-minimize'] // 只有传入 -p 或 --optimize-minimize
       })
     ]
+  };
};

导出 Promise

webpack 将运行由导出的,并且等待 Promise 返回。便于需要异步地加载所需的配置变量。

module.exports = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve({
        entry: './app.js',
        /* ... */
      })
    }, 5000)
  })
}

导出多个配置对象

作为导出配置对象/配置的替代,你可能需要导出多个配置对象(从 webpack 3.1.0 开始导出多个)。当运行 webpack 时,所有的配置对象都会构建。例如,导出多个配置对象,对于针对多个构建目标(例如 AMD 和 CommonJS)打包 library 非常有用。

module.exports = [{
  output: {
    filename: './dist-amd.js',
    libraryTarget: 'amd'
  },
  entry: './app.js',
  mode: 'production',
}, {
  output: {
    filename: './dist-commonjs.js',
    libraryTarget: 'commonjs'
  },
  entry: './app.js',
  mode: 'production',
}]

联系我
置顶