我一直在使用 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/