我正在尝试将我的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
功能...... 答案 0 :(得分:5)
看一下处理与产生子进程有关的许多麻烦的grunt-nodemon。
答案 1 :(得分:4)
这是因为grunt-contrib-watch
当前会将所有任务运行作为子进程生成。因此变量child
不在同一个进程上下文中。很快,grunt-contrib-watch@0.3.0
将以nospawn
选项发布。这将允许您配置手表在同一上下文中生成任务运行,并使您的上述示例工作。
请查看此问题以获取更多信息: