2013-03-15 6 views
19

Sto utilizzando Grunt per compilare CoffeeScript e Stylus con un'attività di controllo. Ho anche il mio editor (SublimeText) impostato per salvare i file ogni volta che rimuovo la pagina da loro (odio perdere il lavoro).Come si fa a rendere grunt.js non in crash sugli avvisi di default?

Sfortunatamente, se Grunt riscontra un errore di sintassi in uno dei file che sta compilando, genera un avviso e si chiude con Aborted due to warnings. Posso fermarlo facendo questo passando --force. C'è un modo per rendere non abortire il comportamento predefinito (o di controllo che gli avvertimenti compiti sono abbastanza importanti per uscire Grunt?

risposta

28

registrare il proprio compito, che si svolgerà alle attività che si desidera. Poi si deve passare l'opzione 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

Questo funziona, ma l'opzione di forzatura è attiva per tutte le attività rimanenti nella sequenza. Ho un altro hack in una risposta a [questa domanda] (http://stackoverflow.com/questions/16612495/continue-certain-tasks-in-grunt-even-if-one-fails/16972894#16972894) – explunit

+0

Couldn ' t fai semplicemente grunt.option ('force', false); dopo aver eseguito i compiti? –

3

ho provato asgoth 's soluzione Adam Hutchinson' s suggerimento, ma ha trovato che il flag di forzatura veniva arretrato immediatamente falsa lettura dei grunt.task documentazione API per grunt.task.run, si afferma che

Ogni attività specificata in taskList verrà eseguita immediatamente dopo il completamento dell'attività corrente, nell'ordine specificato.

Ciò significava che non potevo semplicemente riportare il flag di forza su falso immediatamente dopo aver chiamato grunt.task.run. La soluzione che ho trovato è stata quella di avere attività esplicite impostando il flag di forzatura su false successivamente:

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); 
}); 
Problemi correlati