javascript - 如果缺少输入文件,是否有办法导致 Grunt 插件失败?

标签 javascript gruntjs

我一直在使用 Grunt cssmin plugin .我的 Gruntfile 中有一个 block ,大致如下所示:

cssmin: {
    target: {
        files: {
            '<%= config.target %>/mytarget.css': [
                'bower_components/normalize.css/*.css',
                'bower_components/html5-boilerplate/css/main.css',
                '<%= config.src %>/css/*.css'
            ]
        }
    }
}

有一段时间这工作正常;但是我将它移到了另一台机器上并且没有正确设置我的 Bower 组件 - html5-boilerplate/css/main.css 文件丢失了 - 但任务仍然成功完成。事实上,我可以将完全伪造的路径放入该数组中,并且缩小仍然会完成。

一般情况下,如果像这样的数组中缺少文件,是否有办法导致 Grunt 失败并退出? (我不确定文件数组是通用的 Grunt 概念还是 cssmin 提供的概念)。如果没有,是否有办法导致此特定插件失败?

(顺便说一下,我知道现在 HTML5 Boilerplate 可能有点过时了,但我正在迁移一个旧站点。我还修复了 Bower 安装过程,以便它可以运行现在自动执行此步骤之前。不过,我仍然想了解一个更通用的解决文件丢失问题的方法。

最佳答案

files array format如果文件不存在,您可以使用 nonull: true 发出警告:

files: [
  {
    src: [
      'a.js',
      'b.js',
    ],
    dest: 'c.js',
    nonull: true
  }
]

Now force Grunt to stop通过包装发出警告 grunt.log.warn在你自己的函数中:

var gruntLogWarn = grunt.log.warn;
grunt.log.warn = function(error) {
    gruntLogWarn(error); // The original warning.
    grunt.fail.warn('Stop! Hammer time.'); // Forced stop.
};

以上将在任何警告时停止。但是如果源文件丢失我们想停止。过滤关于“源文件...未找到”的 Grunt 警告:

var gruntLogWarn = grunt.log.warn;
grunt.log.warn = function(error) {
  var pattern = new RegExp("^Source file (.*) not found.$");
  if (pattern.test(error)) {
    grunt.fail.warn(error);
  } else {
    gruntLogWarn(error);
  }
};

关于javascript - 如果缺少输入文件,是否有办法导致 Grunt 插件失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27721272/

相关文章:

javascript - 如何设计链式 Model.find() 函数?

javascript - React - 从子组件更新状态,然后根据状态执行某些操作

javascript - Grunt 模块不执行

android - 在哪里存储构建 Artifact : Grunt, node.js 后端、github、android、iOS 客户端

javascript - 如何在访问时在文本字段中获取和插入用户的电话号码

javascript - 在javascript中存储for循环的索引

javascript - grunt-express:socket.io 的配置忽略 http 基础

gruntjs - 警告 : StringMap expected string key Use --force to continue

JavaScript 开发 - 为代码行添加书签?

javascript - 获取 Grunt 插件的目标