我是grunt的新手...我只是尝试实现一个自定义任务(使用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;
目前我在配置方面遇到困难,以及如何在自定义任务处理函数中处理文件数组。 Grunt给我的错误是它无法读取未定义的属性forEach
。我也尝试了一个看起来像......
var config = {
custom: {
files : [
{ src: "folder1/*.json" },
{ src: "folder2/**/*.json" }
]
}
};
不确定,但我在一些教程中看到过......
我已经看过几个示例grunt文件,但在每个示例中,配置看起来有点不同,或者文件与导入的任务和模块一起使用,因此示例不显示如何访问配置的文件。任何有助于我更好地理解其工作原理(以及我做错了什么)的指导都表示赞赏。
更新
我发现我可以通过config-property查询选项,但我不确定这是否是正确的方法。在我的任务处理程序中,我这样做是为了查询已配置文件的列表......
var files = grunt.config.get("custom.files");
...返回预期的数组(但我发现通过路径表达式查询选项有点奇怪)。我意识到(通过使用TypeScript
)this
的范围不是当前任务的上下文;这就是files
始终未定义的原因。将通话更改为registerMutliTask
至...
grunt.registerMultiTask("custom", "...", function() { ... });
...解决了这个问题。我在path-expression中使用通配符;我希望Grunt可以扩展这些表达式并给我一个所有匹配路径的列表。这个功能是否存在,或者我是否必须自己创建?
答案 0 :(得分:2)
我可以使用以下代码迭代配置的文件(文件模式)...
grunt.registerMultiTask("custom", "...", function() {
grunt.file
.expand(this.data)
.forEach(function(file) {
...
});
});