2016-08-23 2 views
0

私はちょうど新しいことをやっています...私はちょうど与えられたファイルのセットを反復して何らかの処理を行うカスタムタスク(TypeScriptを使って)を実装しようとしました。これは私がこれまでに...カスタムグランタタスクによるファイルの処理

function gruntFile(grunt: IGrunt): void { 
    grunt.registerMultiTask("custom", "...",() => { 
     this.files.forEach(function(next) { 
      ... 
     }); 
    }); 

    var config: grunt.config.IProjectConfig = { 
     custom: { 
      files: [ 
       "folder1/*.json", 
       "folder2/**/*.json" 
      ] 
     } 
    }; 
    grunt.initConfig(config); 
} 
(module).exports = gruntFile; 

は現在、私は、設定に苦労し、どのように私は私のカスタムタスクハンドラ関数内のファイルの配列をacccessことができたものです。グランは私に、不定のプロパティforEachを読むことができないというエラーを私に与えます。私もそのように見えるの構成を試してみました...私はすでにサンプルイサキ・ファイルのカップルを見てきました

var config = { 
    custom: { 
     files : [ 
      { src: "folder1/*.json" }, 
      { src: "folder2/**/*.json" } 
     ] 
    } 
}; 
そのことについて

わからないが、私はいくつかのチュートリアルでこれを見てきました...ただし、各例では構成が少し違って見えるか、インポートされたタスクやモジュールと組み合わせてファイルが使用されるため、サンプルには構成ファイルへのアクセス方法が示されません。それがどのように機能するか(そして私が間違っていること)を理解するのに役立つガイダンスは高く評価されます。

更新

私は私がするconfig-propertyを経由してオプションを照会することができることを発見したが、私は、これはそれを行うための正しい方法であるかどうかわからないです。私のタスクハンドラでは、私は...予想される配列を返します

var files = grunt.config.get("custom.files"); 

を...構成されたファイルのリストを照会するために、これを行う(私はそれは少し奇妙にパス式を経てオプションを照会するために見つけます。)。私は(TypeScriptを使って)thisのスコープが現在のタスクのコンテキストではないことを認識しました。そのため、filesは常に未定義でした。電話をregisterMutliTaskに変更すると...

grunt.registerMultiTask("custom", "...", function() { ... }); 

...この問題は修正されました。パス式にワイルドカード文字を使用します。私はGruntがこれらの表現を拡張して、すべての一致するパスのリストを私に与えることを望んでいました。この機能は存在するのですか、それとも自分で作成する必要がありますか?

答えて

2

私は...

grunt.registerMultiTask("custom", "...", function() { 
    grunt.file 
     .expand(this.data) 
     .forEach(function(file) { 
      ... 
     }); 
}); 
次のコードを使用して構成ファイル(ファイルパターン)を反復することができました