我正在使用Grunt编译CoffeeScript和Stylus,并使用监视任务。 我还将我的编辑器(SublimeText)设置为每次离开页面时保存文件(我讨厌丢失工作)。
不幸的是,如果Grunt在任何要编译的文件中出现语法错误,它会抛出警告并带有“由于警告而中止”的退出信息。 通过传递 --force
,可以防止它这样做。 是否有方法使不中止成为默认行为(或控制哪些任务的警告足以退出Grunt)?
我正在使用Grunt编译CoffeeScript和Stylus,并使用监视任务。 我还将我的编辑器(SublimeText)设置为每次离开页面时保存文件(我讨厌丢失工作)。
不幸的是,如果Grunt在任何要编译的文件中出现语法错误,它会抛出警告并带有“由于警告而中止”的退出信息。 通过传递 --force
,可以防止它这样做。 是否有方法使不中止成为默认行为(或控制哪些任务的警告足以退出Grunt)?
注册您自己的任务,以运行您想运行的任务。然后您必须传递 force
选项:
grunt.registerTask('myTask', 'runs my tasks', function () {
var tasks = ['task1', ..., 'watch'];
// Use the force option for all tasks declared in the previous line
grunt.option('force', true);
grunt.task.run(tasks);
});
这意味着我不能简单地在调用grunt.task.run后立即将强制标志设置为false。我找到的解决方案是在明确的任务之后将强制标志设置为false:在当前任务完成后,将立即按指定顺序运行taskList中的每个指定任务。
grunt.registerTask('task-that-might-fail-wrapper','Runs the task that might fail wrapped around a force wrapper', function() {
var tasks;
if ( grunt.option('force') ) {
tasks = ['task-that-might-fail'];
} else {
tasks = ['forceon', 'task-that-might-fail', 'forceoff'];
}
grunt.task.run(tasks);
});
grunt.registerTask('forceoff', 'Forces the force flag off', function() {
grunt.option('force', false);
});
grunt.registerTask('forceon', 'Forces the force flag on', function() {
grunt.option('force', true);
});