我正在尝试将我的Node应用程序作为Grunt任务运行.但是,我需要将其作为子进程生成,以允许我并行运行监视任务.
这有效:
grunt.registerTask('start', function () {
grunt.util.spawn(
{ cmd: 'node'
, args: ['app.js']
})
grunt.task.run('watch:app')
})
Run Code Online (Sandbox Code Playgroud)
但是,当监视任务检测到更改时,这将再次触发启动任务.在我生成我的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')
})
Run Code Online (Sandbox Code Playgroud)
看起来:
undefined.child没有kill功能......我目前的情况是我使用grunt制作我的快递应用程序的生产版本(最小化并合并所有js/css,复制所有文件到位)然后我必须运行一个设置环境变量的脚本(我的应用程序)仅用于在测试模式下运行时,测试工具),创建一个空的Mongo的测试数据库,然后调用的应用程序目录NPM启动,然后我手动不得不从Chrome浏览或虚拟运行测试,我想要做的是有grunt设置环境变量并运行服务器,运行测试,然后停止服务器(将来如果一切都成功,那么部署它也会很好).但是,当我尝试在grunt中运行应用程序时,它会在完成后立即停止.
如何让grunt启动应用程序,等到它启动然后运行测试?