Я использую grunt для выполнения некоторых задач каждый раз, когда я меняю свой код (например, jshint), и я хочу перезагружать процесс 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...
});
И затем, каждый раз, когда часы перезапускаются, другая задача использует grunt.util.spawn для уничтожения процесса phantomJs, что, конечно, ОЧЕНЬ некрасиво.
Есть ли лучший способ сделать это? Дело в том, что процесс phantomJs не завершается, потому что я использую его в качестве веб-сервера для сервера REST API с JSON.
Могу ли я иметь обратный вызов ворчания или что-то в этом роде всякий раз, когда начинаются часы, чтобы я мог закрыть свой предыдущий процесс 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);
});
});