2017-08-30 7 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/')) 
}) 

私はいくつかの提案がある場合は、新しくなっています。助けてください。 build.ENVとcopy.configタスクを組み込むために飲み込むために

+0

この非常に役立つ質問を見てみましょう。https://stackoverflow.com/questions/23023650/is-it-possible-to-pass-a-flag-toタスクを別の方法で実行する – Mark

答えて

1

あなたが3、既存のコンフィグ(PROD、舞台、テストを)mvを新しいconfigsディレクトリ... MKDIRのconfigs

に続いて、2つの関連の変更...あなたの3つのデフの設定ファイルについて知っている

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)); 
}); 
関連する問題