現在我有了Gruntfile設置來執行一些自動檢測魔法,比如解析源文件來解析roder中的一些PHP源文件,以便在運行grunt.initConfig()
之前動態找出我需要知道的文件名和路徑。如何在grunt.initConfig()之前執行異步操作?
不幸的是grunt.initConfig()
似乎並不是異步運行,所以我沒有辦法讓我的異步代碼在我可以調用之前執行。有沒有一個技巧來實現這一點,還是我必須同步重寫我的檢測程序?在我的回調到達之前有沒有簡單的方法來阻止執行?
裏面的咕嚕聲任務當然有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(...);
});
};
任何好的想法如何完成這件事?
非常感謝!
會發生什麼? – 2013-05-14 15:55:14
這不是我上面做的嗎?會發生什麼是grunt不會等待我的回調,因此在grunt客戶端返回之前不會調用grunt.initConfig()等。 – leyyinad 2013-05-14 15:58:12
哦,是的,你做到了,我的錯誤... – 2013-05-14 20:57:40