これで Gruntfile のセットアップが完了し、ソースファイルの解析などの自動検出マジックを実行して、roder でいくつかの PHP ソースを解析し、実行前に知っておく必要があるファイル名とパスを動的に把握することができましたgrunt.initConfig()
。
残念ながらgrunt.initConfig()
、非同期で実行することを意図していないようです。そのため、呼び出す前に非同期コードを実行する方法がわかりません。これを達成するためのトリックはありますか、それとも検出ルーチンを同期的に書き直す必要がありますか? コールバックが到着する前に実行をブロックする簡単な方法はありますか?
grunt タスクの内部にはもちろん がありますthis.async()
が、initConfig()
それは機能しません。
以下は、簡略化された例です。
function findSomeFilesAndPaths(callback) {
// async tasks that detect and parse
// and execute callback(results) when done
}
module.exports = function (grunt) {
var config = {
pkg: grunt.file.readJSON('package.json'),
}
findSomeFilesAndPaths(function (results) {
config.watch = {
coffee: {
files: results.coffeeDir + "**/*.coffee",
tasks: ["coffee"]
// ...
}
};
grunt.initConfig(config);
grunt.loadNpmTasks "grunt-contrib-coffee"
// grunt.loadNpmTasks(...);
});
};
これを実現するための良いアイデアはありますか?
どうもありがとう!