2017-08-30 19 views
0

我擁有文件夾,用於生成,階段和測試等不同的構建環境。 例如:如何根據環境在gulp上覆制文件

src/config.prod.js 
src/config.stage.js 
src/config.test.js 

我想是基於環境的我,使用我下面的代碼的命令得到環境名稱複製配置文件:

var nopt = require('nopt') 
     , knownOpts = { 
       "env" : [String, null] 
     } 
     , shortHands = { 
       "test" : ["--env", "test"] 
      , "dev" : ["--dev", "dev"] 
      , "stage" : ["--env", "stage"] 
      , "prod" : ["--env", "prod"] 
     }; 
var flags = nopt(knownOpts, shortHands, process.argv, 2); 

,當我打命令

gulp build --env dev 

我得到的環境名稱,現在我想要的是將配置文件複製到基於環境的dist文件夾(構建)。我有這個複製文件的任務,但它複製所有文件,因爲我不知道如何過濾掉它。

gulp.task('copyConfig', function(){ 
    gulp.src(['src/*.js']) 
    .pipe(gulp.dest('dist/')) 
}) 

我是新來的吞嚥,如果有人有任何建議。請幫忙。

+0

看這個非常有幫助的問題:https://stackoverflow.com/questions/23023650/is-it-possible-to-pass-a-flag-to -gulp的到了,它運行的任務功能於不同-方式 – Mark

回答

1

新CONFIGS目錄,您的MV 3,現有CONFIGS(PROD,階段,測試)...的mkdir CONFIGS

然後,2個相關的變化吞掉納入build.ENV和copy.config任務知道你的3個DIFF配置文件...

var settings = { 
    /* 
    * Environment development | production 
    * match './configs' files of same name 
    */ 
    environment : process.env.NODE_ENV || 'development', 
    /* 
    * Where is our config folder? 
    */ 
    configFolder : 'configs', 
    /* 
    * Where is our code? 
    */ 
    srcFolder : 'app/scripts', 
    /* 
    * Where are we building to? 
    */ 
    buildFolder : 'dist', 
}; 

/** 
* Config Task 
* 
* Get the configuration file (dev or prod), rename it 
* and move it to be built. 
*/ 
gulp.task('config', function() { 
    return gulp.src(settings.configFolder + '/' + settings.environment + '.js') 
      .pipe(rename('config.js')) 
      .pipe(gulp.dest(settings.srcFolder)); 
});