如果某些条件匹配,如何将一些js注入webpack?

时间:2016-09-29 18:26:03

标签: javascript webpack

我正在使用env变量运行webpack服务器,测试环境指向我的构建环境:

var environment = process.env.environment == null ? "development" : process.env.environment

如何根据此environment值在构建中添加一些j?我不想用DefinePlugin编写丑陋的内容,然后再写下这些内容:

if (NODE_ENV="test") {
  import { "my_polyfill" }
}

1 个答案:

答案 0 :(得分:0)

查看node-config

  1. 创建一个default.js,其中包含您的dev webpack配置。
  2. 使用production.js
  3. 上的附加配置创建default.js

    默认情况下,node-config会选择default.js并将其提供给网络包。

    如果您设置NODE_ENV=production,则会选择production.js并执行Object.assign({}, default, production)并将其提供给网络包。

    通过这种方式,您将能够为webpack管理n个env配置。

    跳起来有帮助!

    <强> [UPDATE]

    添加一个示例来演示您的案例......

    在项目的根目录中创建config/default.js

    export default {
      entry: ['./foo/bar', './foo1/bar1'],
      output: {
         path: path.resolve('./build/js'),
         filename: '[name].js',
         publicPath: '/js/'   
      },
    }
    

    在项目的根目录中创建config/production.js

       export default {
          entry: ['./foo/bar', './foo1/bar1', './new/entry'], //adding the new entry
          plugins: [
           new webpack.optimize.UglifyJsPlugin({
            compress: {
             warnings: false,
            },
           }),
          ],
        }
    

    在项目的根目录中创建webpack.config.babel.js

    import config from 'config' //I'm using ES6 style. You can use require also
    
    export default config.default //export the config based on the NODE_ENV
    

    显示时间

    webpack --progress --colors
    default.js as the config
    

    在这种情况下,node-config将返回

    NODE_ENV=production
    webpack --progress --colors 
    

    在这种情况下,node-config将同时使用default.jsproduction.js并覆盖default.js(这里的条目和来自production.js的插件将在默认情况下被覆盖.js)它将返回一个带有{entries(来自production.js),输出(来自default.js),插件(来自production.js)}的对象,这是一个Object.assign()操作

    要恢复为default.js。您需要重置NODE_ENV

    NODE_ENV=
    

    根据您的操作系统执行export时,Yov可能需要使用exportsNODE_ENV 希望它有所帮助