【发布时间】:2013-08-27 12:53:09
【问题描述】:
每次我更改代码(例如 jshint)时,我都会使用 grunt 来完成一些任务,并且我想在每次更改时重新加载 phantomJs 进程。
我发现的第一种方法是第一次使用grunt.util.spawn来运行phantomJs。
// http://gruntjs.com/api/grunt.util#grunt.util.spawn
var phantomJS_child = grunt.util.spawn({
cmd: './phantomjs-1.9.1-linux-x86_64/bin/phantomjs',
args: ['./phantomWorker.js']
},
function(){
console.log('phantomjs done!'); // we never get here...
});
然后,每次 watch 重启时,另一个任务使用 grunt.util.spawn 杀死 phantomJs 进程,这当然非常难看。
有没有更好的方法呢? 问题是 phantomJs 进程没有终止,因为我将它用作网络服务器来为带有 JSON 的 REST API 提供服务。
我是否可以在 watch 启动时进行 grunt 回调或其他操作,以便我可以在重新运行任务以创建新任务之前关闭以前的 phantomJs 进程?
我使用 grunt.event 制作了一个处理程序,但我看不到如何访问 phantomjs 进程以杀死它。
grunt.registerTask('onWatchEvent',function(){
// whenever watch starts, do this...
grunt.event.on('watch',function(event, file, task){
grunt.log.writeln('\n' + event + ' ' + file + ' | running-> ' + task);
});
});
【问题讨论】:
标签: javascript node.js phantomjs gruntjs grunt-contrib-watch