我使用grunt-watch
重新构建我的样式表:
watch: {
less: {
files: ['media/less/**/*.less'],
tasks: ['less'],
options: {
atBegin: true,
spawn: false
}
}
}
但是如果任何.less
文件中存在语法错误,则任务只是循环,尝试每秒重新构建.less
个文件......这使得调试相当困难,因为错误消息很快滚动过去。
有没有办法解决这个问题,所以grunt-watch
只会在.less
文件再次更改后重新运行任务?
这是使用:
grunt@0.4.2
grunt-contrib-less@0.8.3
grunt-contrib-watch@0.5.3
答案 0 :(得分:2)
我认为您所描述的问题是this one,该问题已在master中修复但尚未发布(截至2013/12/17)。
答案 1 :(得分:0)
好吧,出于调试目的,您可以使用自定义任务执行less
任务的简单信封:
grunt.registerTask('myless', 'my less task', function() {
// do whatever debugging you want and stop the loop if needed.
grunt.task.run(['less']);
});
然后使用myless
中的watch
任务。
更新:
这个想法是因为任何对less
的重复调用现在通过你的代码 - 你可以做任何需要提供更具体的输出或防止重复调用,如果失败是“期望的”结果并且应该失败,但不是循环。
更新2:
这样的事情:
watch: {
`less`: {
files: ['**/*.less'], // or whatever the extension is
tasks: ['myless'] // your envelope task
}
}
var flag;
grunt.registerTask('myless', 'My LESS task', function() {
if(flag === true) {
// if you are here - it means watch just invoked you repeatedly
// do whatever you need to analyze the issue (includig running an additional task)
flag = false;
return; // you exit task without altering any less files again -
// that should NOT trigger watch again
} else {
flag = true;
grunt.task.run(['less']);
}
});