繁体   English   中英

在grunt.js中处理*无文件*错误

[英]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.forEachthis.files.forEach会迭代现有文件,因此[Getter] (不知道是什么)不会对不存在的文件执行迭代。

现在,这对我来说是个问题,因为我经常更改文件路径。 而且,如果我错误配置新路径, 也不会收到有关无效路径的通知 解决此问题的唯一方法是扫描长控制台输出,这对于大型项目确实令人沮丧。 我希望在源列表为空时得到通知


问题是...实际上, 问题是:*当没有给定任务/目标的源文件时,如何强制咕force声? *我可以在全球范围内更改此行为吗? 我的意思是,我可以告诉grunt为所有任务大喊空的源列表吗? * II是否误解了某些内容? 如果是这样,请纠正我。

据我this.files.forEachthis.files.forEach遍历现有文件

files对象包含您的Gruntfile中定义的所有src对象,包括不存在的文件/路径。 因此,它也会遍历不存在的路径。

[Getter] (不知道是什么)不会对不存在的文件执行迭代

没错, files对象中的src方法将仅获取现有文件。

我希望在源列表为空时得到通知

您可以遍历orig.src中的每个files并从那里进行错误处理。
请注意,如果您的srcundefinednull ,则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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM