2016-09-29 73 views
0

我快的WebPack服务器env变量,测试环境指向我的编译环境:只有在某些条件匹配的情况下才能向webpack注入一些js?

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

我如何可以添加一些JS将根据该environment价值构建?我不想写东西,丑陋与DefinePlugin再之类的东西:

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

回答

0

退房node-config

  1. 创建default.js其中包含你的开发的WebPack配置。
  2. default.js

创建额外配置一个production.js默认node-config会选择default.js并将其提供给的WebPack。

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

通过这种方式,您将能够管理n个env config for webpack。

它帮助!

[更新]

添加一个例子来说明你的情况......

在项目的根目录下创建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_ENV=production 
webpack --progress --colors 

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

返回到default.js。您需要重置NODE_ENV

NODE_ENV= 

Yov可能需要使用exportexports,同时根据您的操作系统 希望它可以帮助做NODE_ENV

+0

你能告诉我一个工作的例子吗?我应该如何处理Object.assign? – asiniy

+0

@asiniy你不需要对Object.assign()做任何事情。 node-config会照顾到这一点。我会添加一些例子。 –

+0

'inject'是什么意思?根据'env'添加额外的'entries'? –

相关问题