Я использую grunt для выполнения некоторых задач каждый раз, когда я меняю свой код (например, jshint), и я хочу перезагружать процесс phantomJs каждый раз, когда у меня есть изменения.use 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...
});
И потом, каждый раз, когда часы перезагружается, еще одна задача использует 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);
});
});
Я просто играю с ворчанием, чтобы познакомиться с ним, прежде чем использовать его. Таким образом, мы снова вручную уничтожаем процесс. Я не знал, что мы можем использовать событие «exit», подобное этому. Вы уверены, что всякий раз, когда часы перезагружают задачи, это событие «выхода» будет срабатывать? Конечно, убить его на «выходе» - это лучший случай. – AntouanK
Извините, я смутил ваш прецедент с материалами, которые я читал на другой вкладке. Просто внесла некоторые изменения в фрагмент кода, с тем, что, как я думал, будет соответствовать вашему варианту использования. Однако он не работает. Gruntfile.js выполняется заново каждый раз, когда наблюдатель обнаруживает изменение. Таким образом, не существует постоянной ссылки на фантомы. Во всяком случае, это не так. –