我正在写一些咕噜的插件。我使用this.files.forEach
来迭代源文件。这似乎是推荐的解决方案。任务的代码或多或少看起来像这样:
grunt.registerMultiTask(..., ..., function(){
// init
this.files.forEach(function (f) {
// do something
}
});
控制台记录的 this.files
看起来像这样:
[ { src: [Getter],
dest: 'tmp/external-sources.json',
orig: { src: [Object], dest: 'tmp/external-sources.json' } } ]
但是,当没有可识别的源文件时,我遇到了麻烦。据我所知,this.files.forEach
会迭代现有文件,因此[Getter]
(不知道,那是什么)不会对不存在的文件执行迭代
现在,这对我来说是个问题,因为我经常更改文件路径。如果我错误配置了新路径,我无法获得有关无效路径的通知。处理这个的唯一方法是扫描长控制台输出,这对大项目来说真的很令人沮丧。 我希望在源列表为空时收到通知
问题是......事实上,问题是: *当给定任务/目标没有源文件时,如何强制grunt大喊? *我可以全局更改此行为吗?我的意思是,我可以告诉咕噜声为所有任务喊出空的源列表吗? *我误解了什么吗?如果是的话,请纠正我。
答案 0 :(得分:0)
据我所知,
this.files.forEach
遍历现有的 文件
files
对象包含Gruntfile中定义的所有src
个对象,包括不存在的文件/路径。因此它也会遍历非现有路径。
[Getter]
(不知道,那是什么)不会对不存在的文件执行迭代
这是正确的,src
对象中的files
方法只会获取现有文件。
我希望在源列表为空时收到通知
您可以从那里为每个orig.src
和错误句柄迭代files
请注意,如果您的src
为undefined
或null
,grunt会向您发出警告并中止,这是您正在寻找的行为。您可以使用--force
标志继续,但我强烈反对。
示例:
<强> Gruntfile.js 强>
module.exports = function(grunt) {
grunt.initConfig({
myTask: {
dev: {
files: [
{src: 'existingFile.js', dest: 'newFile'},
{src: 'nonExistingFile.js', dest: 'newFile2'}
]
}
}
});
grunt.loadTasks('my_tasks');
grunt.registerTask('default', ['myTask']);
};
<强> my_tasks / task.js 强>
module.exports = function(grunt) {
grunt.registerMultiTask('myTask', '', function() {
this.files.forEach(function(f) {
f.orig.src.forEach(function(src) {
//do something with src
});
});
});
};