2015-10-21 77 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);

這爲我工作