2013-03-15 6 views
19

私はGruntを使って、CoffeeScriptとStylusを時計タスクでコンパイルしています。私は自分のエディタ(SublimeText)を離れてページを開くたびにファイルを保存するように設定しました(私は仕事を失うことが嫌いです)。デフォルトでgrunt.jsが警告でクラッシュしないようにしますか?

残念ながら、Gruntがコンパイルしているファイルの構文エラーを起こすと、警告がスローされ、Aborted due to warningsで終了します。私は--forceを渡すことでこれをやめることができます。どのような方法でも、デフォルトの動作を中止しないでください(または、どのタスクの警告がグランツを終了するのに十分重要であるかを制御する)?

答えて

28

あなた自身のタスクを登録してください。 :

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); 
}); 
+3

シーケンスで残りのすべてのタスクに対して強制オプションがオンになっています。私は[この質問](http://stackoverflow.com/questions/16612495/continue-certain-tasks-in-grunt-even-if-one-fails/16972894#16972894)の答えに別のハックを持っています – explunit

+0

Couldn 'あなたはちょうどgrunt.option( '力'、偽)を行います。タスクを実行した後に? –

3

私はsの提案asgothAdam Hutchinsonでの解決」を試してみましたが、強制フラグをfalseに戻ってすぐに設定されていたことがわかっgrunt.task.runためgrunt.task 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); 
}); 
関連する問題