Ausführen der Node-App über Grunt
Ich versuche, meine Node-Anwendung als Grunt-Task auszuführen. Ich muss dies jedoch als untergeordneter Prozess erzeugen, damit ich die Überwachungstask parallel ausführen kann.
Das funktioniert:
grunt.registerTask('start', function () {
grunt.util.spawn(
{ cmd: 'node'
, args: ['app.js']
})
grunt.task.run('watch:app')
})
Wenn jedoch Änderungen von der Überwachungsaufgabe erkannt werden, wird die Startaufgabe erneut ausgelöst. Bevor ich einen weiteren untergeordneten Prozess meiner Node-App spawne, muss ich den vorherigen beenden.
Ich kann jedoch nicht herausfinden, wie ich den Prozess beenden soll. So etwas funktioniert nicht:
var child
grunt.registerTask('start', function () {
if (child) child.kill()
child = grunt.util.spawn(
{ cmd: 'node'
, args: ['app.js']
})
grunt.task.run('watch:app')
})
Anscheinend:
Obwohl ich den erzeugten Prozess in einer Variablen außerhalb des Funktionskontexts speichere, bleibt er nicht bestehen. Wenn die Startaufgabe das nächste Mal ausgeführt wird, ist child diesundefined
.child
hat keinkill
Funktion…