Я пытаюсь запустить приложение Node как задачу Grunt. Однако мне нужно создать это дочерний процесс, чтобы позволить мне запускать задачу просмотра параллельно.
Это работает:
grunt.registerTask('start', function () {
grunt.util.spawn(
{ cmd: 'node'
, args: ['app.js']
})
grunt.task.run('watch:app')
})
Однако, когда изменения обнаруживаются задачей просмотра, это снова запустит задачу запуска. Прежде чем я создам другой дочерний процесс моего приложения Node, мне нужно убить предыдущий.
Я не могу понять, как убить процесс. Что-то вроде этого не работает:
var child
grunt.registerTask('start', function () {
if (child) child.kill()
child = grunt.util.spawn(
{ cmd: 'node'
, args: ['app.js']
})
grunt.task.run('watch:app')
})
Похоже, что
- Несмотря на то, что я храню порожденный процесс в переменной вне контекста функции, он не сохраняется, поэтому при следующем запуске задачи-потомке
undefined
. -
child
не имеет функцииkill
...