通过咕噜运行节点的应用程序(Running Node app through Grunt)

2019-07-20 10:30发布

我试图运行我节点应用作为一个咕噜任务。 我需要但产卵这是一个子进程,让我在并行运行手表任务。

这工作:

grunt.registerTask('start', function () {
  grunt.util.spawn(
    { cmd: 'node'
    , args: ['app.js']
    })

  grunt.task.run('watch:app')
})

然而,当手表任务中检测到的变化,这将再次触发启动任务。 之前,我产卵我节点应用的另一个孩子的过程,我需要杀上一个。

我无法弄清楚如何却杀死进程。 像这样的东西不起作用:

var child

grunt.registerTask('start', function () {
  if (child) child.kill()
  child = grunt.util.spawn(
    { cmd: 'node'
    , args: ['app.js']
    })

  grunt.task.run('watch:app')
})

看起来:

  1. 即使我的衍生进程存储在一个变量的函数上下文之外,它并没有持续下去,所以一开始任务下次运行时,孩子是undefined
  2. child有没有kill功能...

Answer 1:

这是因为grunt-contrib-watch目前派生的所有任务运行的子进程。 所以变量child是不一样的处理范围内。 很快就会, grunt-contrib-watch@0.3.0将与发布nospawn选项。 这将让你配置手表在同一范围内产卵任务运行并会使您上面的例子中工作。

看看这个问题多一点信息:

https://github.com/gruntjs/grunt-contrib-watch/issues/45



Answer 2:

看看咕噜-nodemon它处理了很多有关产卵一个子进程的头痛。



文章来源: Running Node app through Grunt