2015-10-21 116 views
2

我有一个从中启动webpack捆绑的gulp文件。所述的WebPack配置具有如下所示从gulp注入环境变量到webpack

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

在gulpfile使用process.env.NODE_ENV定义的别名,我有顺序执行2个任务

  1. set-env,其设定使用gulp-env如下

    环境变量
    gulpEnv({ 
        vars: { 
         NODE_ENV: 'dev' 
        } 
    }); 
    
  2. webpack任务取决于上一个任务和e只有当第一个完成时才起作用

这里变量没有被正确注入。文件名将被解析为config.undefined.js。我在做什么有什么问题?

+0

你找到任何解决这个?我也有完全一样的问题。 – Fernando

回答

0

我改变我的做法是,以这样的

的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. 而是采用gulp-env设置里面set-env,我只是设置一个全局变量NODE_ENV='dev'
  2. 里面webpack任务,我做webpackConfig['resolve']['alias']['config'] = webpackConfig['resolve']['alias']['config'].replace(/<envt>/, NODE_ENV);

这为我工作