从gulp注入一个环境variables到webpack

我有一个从我开始webpack捆绑gulpfile。 webpackconfiguration具有使用process.env.NODE_ENV定义的别名,如下所示

 . . resolve: { modulesDirectories: ["node_modules", "js", "jsx"], extensions: ["", ".js", ".jsx"], alias: { config: path.join(__dirname, ('config.' + process.env.NODE_ENV + '.js')) } }.. 

在gulp文件中,我有两个按顺序执行的任务

  1. set-env使用gulp-env设置环境variables,如下所示

     gulpEnv({ vars: { NODE_ENV: 'dev' } }); 
  2. webpack任务依赖于以前的任务,只有在第一个完成时才执行

这里的variables似乎没有得到正确的注入。 该文件名已被parsing为config.undefined.js 。 我在做什么有什么问题?

我改变了我的方式这样的事情

的WebPack

 var NODE_ENV = process.env.NODE_ENV; var config = { . . resolve: { modulesDirectories: ["node_modules", "js", "jsx"], extensions: ["", ".js", ".jsx"], alias: { //<envt> will be injected by gulp config: config: path.join(__dirname, ('config.<envt>.js')) } } . . . } //If webpack is directly invoked with NODE_ENV, replacement will happen here if (NODE_ENV) { config['resolve']['alias']['config'] = config['resolve']['alias']['config'].replace(/<envt>/, NODE_ENV); } module.exports = config; 

  1. set-env而不是使用NODE_ENV='dev' set-env来设置,我只需设置一个全局variablesNODE_ENV='dev'
  2. webpack任务里面,我正在做webpackConfig['resolve']['alias']['config'] = webpackConfig['resolve']['alias']['config'].replace(/<envt>/, NODE_ENV);

这对我有效