And*_*ier 5 javascript gruntjs
我一直在使用Grunt cssmin插件.我的Gruntfile中有一个块看起来像这样:
cssmin: {
target: {
files: {
'<%= config.target %>/mytarget.css': [
'bower_components/normalize.css/*.css',
'bower_components/html5-boilerplate/css/main.css',
'<%= config.src %>/css/*.css'
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
有一段时间,这工作正常; 但是我把它移到另一台机器上并且没有正确设置我的凉亭组件 - html5-boilerplate/css/main.css文件丢失了 - 然而任务仍然成功完成.事实上,我可以在该数组中放置完全虚假的路径,并且缩小仍然完成.
一般来说,有没有办法导致Grunt失败并退出,如果这样的数组中缺少文件?(我不确定文件数组是一般的Grunt概念还是cssmin提供的概念).如果没有,有没有办法导致这个特定的插件失败?
(顺便说一句,我知道HTML5 Boilerplate现在可能有点过时了,但我正在迁移一个旧网站.我还修复了我的Bower安装过程,以便它在此步骤之前自动运行现在.我仍然想要了解丢失文件问题的更通用的解决方案.
在文件数组格式中,nonull: true如果文件不存在,您可以使用它来发出警告:
files: [
{
src: [
'a.js',
'b.js',
],
dest: 'c.js',
nonull: true
}
]
Run Code Online (Sandbox Code Playgroud)
现在强制Grunt通过将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.
};
Run Code Online (Sandbox Code Playgroud)
以上将停止任何警告.但是如果缺少源文件,我们想要停止.在'源文件...未找到'上过滤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);
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |