Предотвратить цикл `grunt-watch` при синтаксической ошибке в меньшем количестве файлов?
Я использую 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
2 ответа
Я думаю, что проблема, которую вы описываете, является этой, которая была исправлена в master, но еще не была выпущена (по состоянию на 2013/12/17).
Ну, для отладки вы можете сделать простой конверт из 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']);
}
});