我正在尝试将我的Node应用程序作为Grunt任务运行。但是,我需要将其作为子进程生成,以允许我并行运行watch任务。
这有效:
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
这是因为grunt-contrib-watch当前将所有任务运行作为子进程生成。因此,该变量child不在同一过程上下文中。很快grunt- contrib-watch@0.3.0就会发布,并带有一个nospawn选项。这将使您配置监视以在相同的上下文中生成任务运行,并使上面的示例正常工作。
grunt-contrib-watch
grunt- contrib-watch@0.3.0
nospawn
请查看此问题以获取更多信息:
https://github.com/gruntjs/grunt-contrib- watch/issues/45