如何在gulp上

时间:2017-08-30 13:47:31

标签: angularjs node.js gulp

我的文件夹包含不同构建环境的文件,如生产,阶段和测试。 例如:

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

我想要的是根据我获得的环境复制配置文件,使用以下代码从命令i获取环境名称:

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文件夹(build)。我有复制文件的这个任务,但它复制所有文件,因为我不知道如何过滤它。

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

如果有人提出任何建议,我是新手。请帮忙。

1 个答案:

答案 0 :(得分:1)

新的配置目录,你在那里你的3,现有的配置(prod,阶段,测试)... mkdir configs

然后,对gulp进行了2次相关更改,以包含build.ENV和一个知道3个diff配置文件的copy.config任务...

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));
});