2013-11-29 12 views
7

Po zakończeniu zadania Grunt chcę wydrukować pewne informacje. Zobacz opis Grunt poniżej.Jak wydrukować tekst po ukończeniu zadania?

Czy istnieje sposób, aby to osiągnąć? Zauważyłem, że grunt.task.run() nie obsługuje wywołań zwrotnych. Powoduje to, że mój komunikat zostanie wydrukowany przed wydrukiem raportu zasięgu.

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"'); 
}); 

Chcę również, aby uniknąć „hacków”, takich jak tworzenie zadania grunt tylko do drukowania informacji na zewnątrz i dodanie go do łańcucha grunt.task.run() zadań.

+0

nie powinno być zadaniem każdy sam odpowiada za to chce informacji wydruk??? – hereandnow78

+0

Tak, to byłby idealny sposób. Problem polega na tym, że zadanie zasięgu kodu, jakim jest moduł Grunt, nie ma możliwości nadania mu pewnej wiadomości tekstowej do wydrukowania. –

Odpowiedz

0

Jest znacznie lepszy sposób to zrobić bez tworzenia dodatkowego zadania i modyfikowania czegokolwiek jeszcze.

Grunt to proces węzeł, więc można:

  • użyciu procesu stdout napisać co trzeba
  • subskrybować przypadku proces exit to zrobić, gdy zadanie kończy jego wykonanie

jest to prosty przykład, który wypisuje czas, kiedy zadania zakończyło ich wykonanie:

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({ 

Po uruchomieniu dowolnego zadania, zobaczysz wiadomość na dole jak:

zakończył się 18:26:45

17

Tworzenie zadania, które będą uruchamiane, gdy wszystko jest zrobione, a następnie dodać go do łańcucha zadanie:

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

Cóż, chciałem uniknąć takiego obejścia, tworząc specjalne zadanie, aby wydrukować informacje. Jednak i tak doszedłem do tego, ponieważ jeszcze nie znalazłem lepszego sposobu :( –

+0

nie ma lepszego ... – hereandnow78

+0

Z tym też walczyłem. Zakładam, że istnieje dobry powód, aby nie zezwalać użytkownikom na dołączanie wywołania funkcji na liście zależności ... Nie jestem z tego zadowolony, ale moim rozwiązaniem był skrypt bash, który wykonuje przed i po zalogowaniu moje zadanie: – pdoherty926

Powiązane problemy