當您使用咕嚕新的任務,即:Grunt.js:我如何自己標準化文件,Grunt的做法?
grunt.registerMultiTask('name', 'description', function() {...});
一個文件對象是任務函數內部提供的this.files
。這是在grunt配置中查看傳遞到task.files
的值並解析它的標準化結果,可以擴展任何通配符。
問題1:
第一個問題是,我有需要遞歸潛在幾次的任務。每一次,它都希望使用文件對象來獲取所有文件的最新列表,以匹配初始配置參數。例如:
grunt.registerMultiTask('sometask', 'description', function sometask() {
var files = this.files;
//do some stuff with files, then run this func again if needbe:
if(somecondition) sometask.call(this);
});
這裏的問題是,該文件對象不更新,以反映我對文件結構所做的任何更改,所以在下一次函數被調用,文件列表可能過時。
我想什麼,能夠做的是一樣的東西:
grunt.registerMultiTask('sometask', 'description', function sometask(renormal) {
//update this.files if we need to:
if(renormal) {
this.files = renormalize(this.data.files);
}
var files = this.files;
//do some stuff with files, then run this func again if needbe:
if(somecondition_is_matched) sometask.call(this, renormal);
});
問題2:
此外,也許我想打一個插件,需要兩批文件的映射,所以在繁重的配置,我可能有類似:
grunt.initConfig({
...
someplugin: {
filesOne: [{
cwd: "hello"
src: ["something/**"],
dest: "another"
}],
filesTwo: {
"another2": ["soemthing2/*", "!something2/*.js"]
}
}
...
});
而且在插件中,我希望能夠正常化任何filesOne
和filesTwo
是,就像咕嚕規範化「文件」,以便用戶可以輸入所有常用格式的src-dest文件映射。
所以..
繁重的API似乎暴露功能拓展模式等,但似乎並沒有任何提供實現它的引擎蓋下不與文件對象正常化。
有什麼我失蹤/一些接受的方式來做到這一點?