私はGruntを使用して、監視タスクでCoffeeScriptとStylusをコンパイルしています。また、エディター(SublimeText)を設定して、ページから離れるたびにファイルを保存します(作業を失うのは嫌です)。
残念ながら、Gruntがコンパイル中のファイルのいずれかで構文エラーに遭遇すると、警告をスローし、Aborted due to warnings
で終了します。 --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);
});
asgoth の解決策を Adam Hutchinson の提案で試しましたが、強制フラグがすぐにfalseに戻されていることがわかりました。 grunt.task grunt.task.runのAPIドキュメントを読むと、次のように記載されています。
TaskListで指定されたすべてのタスクは、現在のタスクが完了した直後に、指定された順序で実行されます。
つまり、grunt.task.runを呼び出した直後に、強制フラグをfalseに戻すことはできませんでした。私が見つけた解決策は、後で強制フラグをfalseに設定する明示的なタスクを用意することでした。
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);
});