2013-03-15 7 views
19

Używam Grunt do kompilacji CoffeeScript i Stylus z zadaniem watch. Mam również mój edytor (SublimeText), aby zapisywać pliki za każdym razem, gdy odsuwam się od nich (nienawidzę tracić pracy).W jaki sposób sprawiasz, że funkcja grunt.js domyślnie nie powoduje awarii ostrzeżeń?

Niestety, jeśli Grunt popełni błąd składni w którymkolwiek z plików, które kompiluje, generuje ostrzeżenie i kończy pracę z Aborted due to warnings. Mogę to powstrzymać, przekazując --force. Czy jest jakiś sposób, aby nie przerwać domyślnego zachowania (lub kontrolować, które ostrzeżenia zadań są wystarczająco ważne, aby opuścić Grunt?

Odpowiedz

28

Zarejestruj swoje własne zadanie, które będzie wykonywać zadania, które chcesz, a następnie musisz przejść opcję 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); 
}); 
+3

Działa to, ale wtedy opcja siły jest włączona dla wszystkich pozostałych zadań w sekwencji. Mam inny hack w odpowiedzi na [to pytanie] (http://stackoverflow.com/questions/16612495/continue-certain-tasks-in-grunt-even-if-one-fails/16972894#16972894) – explunit

+0

Couldn ' po prostu róbcie: chropowatość ("siła", fałsz); po uruchomieniu zadań? –

3

próbowałem asgoth „s rozwiązanie Adam Hutchinson” sugestią s, ale okazało się, że flaga jest ustawiona siła została natychmiast z powrotem na false Czytając grunt.task Dokumentacja API dla grunt.task.run, stwierdza, że ​​

Każde określone zadanie w liście zadań zostanie uruchomione natychmiast po zakończeniu bieżącego zadania, w określonej kolejności.

Co oznaczało, że nie mogłem po prostu ustawić flagi siły z powrotem na fałsz natychmiast po wywołaniu polecenia grunt.task.run. Rozwiązaniem, które znalazłem, było jawne zadanie ustawienia flagi siły na 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); 
}); 
Powiązane problemy