2013-11-29 15 views
7

Una volta completata l'attività di Grunt, voglio stampare alcune informazioni. Vedi il frammento di Grunt qui sotto.Come stampare un testo una volta completata l'attività grunt?

C'è un modo per raggiungere questo obiettivo? Ho notato che grunt.task.run() non supporta i callback. Ciò causa la stampa del mio messaggio prima dell'output del report di copertura.

grunt.registerTask('coverage', 'Runs all unit tests available via Mocha and generates code coverage report', function() { 
    grunt.task.run('env:unitTest', 'mochaTest'); 

    grunt.log.writeln('Code coverage report was generated into "build/coverage.html"'); 
}); 

voglio anche evitare di "hack", come la creazione di un'attività grugnito solo per la stampa delle informazioni fuori e aggiungerla alla catena grunt.task.run() di compiti.

+0

sognerei ogni compito in sé sia ​​responsabile delle informazioni che vuole stampare??? – hereandnow78

+0

Sì, sarebbe un modo ideale. Il problema è che l'attività di copertura del codice che è un modulo Grunt, non ha un'opzione per dargli un messaggio di testo da stampare. –

risposta

0

C'è un modo molto migliore per farlo, senza creare un compito in più, e la modifica di qualsiasi cosa altro.

Grunt è un processo di nodo, in modo da poter:

  • utilizzare il processo stdout di scrivere quello che ti serve
  • sottoscrivere l'evento processo exit di farlo quando un'attività è finendo la sua esecuzione

Questo è un semplice esempio che stampa il momento in cui i compiti ha terminato la loro esecuzione:

module.exports = function (grunt) { 
    // Creates a write function bound to process.stdout: 
    var write = process.stdout.write.bind(process.stdout); 

    // Subscribes to the process exit event... 
    process.on("exit", function() { 
     // ... to write the information in the process stdout 
     write('\nFinished at ' + new Date().toLocaleTimeString()+ '\n'); 
    }); 

    // From here, your usual gruntfile configuration, without changes 
    grunt.initConfig({ 

Quando si esegue tutta l'operazione, verrà visualizzato un messaggio in fondo come:

finito alle 18:26:45

17

Creare un'attività che verrà eseguito quando tutto è tutto fatto e poi aggiungerlo alla vostra catena compito:

grunt.registerTask('alldone', function() { 
    grunt.log.writeln('Code coverage report was generated into "build/coverage.html"'); 
}); 
grunt.registerTask('default', ['env:unitTest', 'mochaTest', 'alldone']); 
+0

Bene, volevo evitare una tale soluzione creando un'attività speciale solo per stampare un'informazione. Comunque, ho finito per farlo comunque, visto che non ho ancora trovato un modo migliore :( –

+0

non ce n'è uno migliore ... – hereandnow78

+0

Ho anche faticato con questo. Suppongo ci sia una buona ragione per non permettere agli utenti di includere chiamate di funzione nella lista delle dipendenze ... Non ne sono felice, ma la mia soluzione era uno script bash che esegue prima e dopo l'accesso alla mia attività. – pdoherty926

Problemi correlati