[英]handling *no files* error in grunt.js
我在写一些咕unt的插件。 我正在使用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
, this.files.forEach
会迭代现有文件,因此[Getter]
(不知道是什么)不会对不存在的文件执行迭代。
现在,这对我来说是个问题,因为我经常更改文件路径。 而且,如果我错误配置新路径, 也不会收到有关无效路径的通知 。 解决此问题的唯一方法是扫描长控制台输出,这对于大型项目确实令人沮丧。 我希望在源列表为空时得到通知
问题是...实际上, 问题是:*当没有给定任务/目标的源文件时,如何强制咕force声? *我可以在全球范围内更改此行为吗? 我的意思是,我可以告诉grunt为所有任务大喊空的源列表吗? * II是否误解了某些内容? 如果是这样,请纠正我。
据我
this.files.forEach
,this.files.forEach
遍历现有文件
files
对象包含您的Gruntfile中定义的所有src
对象,包括不存在的文件/路径。 因此,它也会遍历不存在的路径。
[Getter]
(不知道是什么)不会对不存在的文件执行迭代
没错, files
对象中的src
方法将仅获取现有文件。
我希望在源列表为空时得到通知
您可以遍历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
});
});
});
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.