2017-12-18 9 views
1

gulp-concatを使用して特定の順序で連結されたソースフォルダ内のすべてのjsファイルを含めるとします。ただし、プロダクションフラグがある場合は、特定のファイルのみを含める必要があります。 yargsとgulp-ifを使用してgulpタスクソースを分離/結合する場合

  • utilities.js
  • のanalytics.js
  • signup.js
  • cookies.js
    • modals.js:

      は例えば、生産に私はこれらのファイルが必要

      しかし、ローカルとステージングでは、私はこれらの2つを望んでいません:

      • のanalytics.js
      • cookies.js

      はそれがyargsを使用可能であり、おそらく飲み込む-場合は、これを指定しますか?

      if (argv.production) { 
          return gulp.src([ 
           'modals.js', 
           'utilities.js', 
           'analytics.js', 
           'signup.js', 
           'cookies.js' 
          ]) 
      } else if (argv.staging) { 
          return gulp.src([ 
           'modals.js', 
           'utilities.js', 
           'signup.js', 
          ]) 
      } 
      

      しかし、これは私が原則を乾燥させるために付着していないよ意味するだろう、と愚かな、エラーを起こしやすい感じ:私は、私は、例えば、ソースの二つのリストを持っている可能性があることを知っています。タスクにプロダクションフラグが付いていれば、アナリティクスやクッキーなどのものだけが含まれる単一のソースとして、どういうわけかこれらをつなぎ合わせることはできますか?

      理想的な世界では、適切なフラグが渡された場合に生産専用ファイルのみを含むgulp.src配列内にgulp if文を挿入できます。

      いくつかアウト・ビッグ・アサイン: - ここでは2つのファイルを作成すればよいですか?環境全体に必要なものすべてを含むベースと、それから生産固有のものをベースにして、それらを組み合わせます。不必要に複雑に思えますが、問題を解決することができます。

      var base_list = ['modals.js', 'utilities.js', 'signup.js']; 
      if (argv.staging) { 
          return gulp.src(base_list); 
      } else if (argv.production) { 
          var prod_list = base_list.concat(['analytics.js', 'cookies.js']); 
          return gulp.src(prod_list); 
      } 
      

      以上の限り(簡体字:あなたの目標はもう少しDRYにする場合はステージングファイルのあなたのセットが生産ファイルのサブセットであるため、

    答えて

    0

    、あなたは、このショットを与えることができます唯一の生産は、他のファイルを必要とし、他のすべての環境では、サブセット)を取得:

    var file_list = ['modals.js', 'utilities.js', 'signup.js']; 
    if (argv.production) { 
        file_list = file_list.concat(['analytics.js', 'cookies.js']); 
    } 
    return gulp.src(file_list); 
    

    ありここに遊びに来ることができ、いくつかの他の一気固有のベストプラクティスやツールかもしれませんが、いくつかの簡単なJavaScriptがトリックを行う可能性があります。

    関連する問題