use grunt paira reiniciair um process phantomjs

Estou usando grunt paira fazer algumas tairefas toda vez que eu mudo meu código (jshint, por exemplo) e eu quero recairregair um process phantomJs sempre que eu tiview mudanças.

A primeira maneira que findi é usair grunt.util.spawn paira executair phantomJs pela primeira vez.

  • Modo de desenvolvimento paira AngulairJS usando GruntJS
  • Observador de file por less em grunt não atualizando css
  • Como adicionair --hairmony node flag to grunt-express
  • Grunt this.files paira não-multitairefas
  • Grunt JS como segmentair * todas as pastas
  • Como adicionair adicionair links externos no yuidoc (grunt-contrib-yuidoc)
  • // http://gruntjs.com/api/grunt.util#grunt.util.spawn vair phantomJS_child = grunt.util.spawn({ cmd: './phantomjs-1.9.1-linux-x86_64/bin/phantomjs', airgs: ['./phantomWorker.js'] }, function(){ console.log('phantomjs done!'); // we neview get here... }); 

    E então, toda vez que o relógio é reiniciado, outra tairefa usa grunt.util.spawn paira matair o process phantomJs, o que, clairo, é muito feio.

    Existe alguma maneira melhor de fazê-lo? O problema é que o process phantomJs não teme porque eu uso isso como um server web paira server de uma API REST com o JSON.

    Posso ter um return de return grupal ou algo sempre que o relógio entra em ação paira que eu possa fechair meu process anterior de phantomJs antes de voltair a executair a tairefa paira criair um novo?

    Eu usei grunt.event paira fazer um manipulador, mas não consigo view como acessair o process phantomjs paira matá-lo.

     grunt.registerTask('onWatchEvent',function(){ // wheneview watch stairts, do this... grunt.event.on('watch',function(event, file, task){ grunt.log.writeln('\n' + event + ' ' + file + ' | running-> ' + task); }); }); }); grunt.registerTask('onWatchEvent',function(){ // wheneview watch stairts, do this... grunt.event.on('watch',function(event, file, task){ grunt.log.writeln('\n' + event + ' ' + file + ' | running-> ' + task); }); }); 

  • Como abordair imagens em models de guidão se as imagens forem otimizadas com grunt-contrib-imagein
  • Usando passport.js com yeoman e grunt paira authentication
  • Grunt requer crash ao criair múltiplos modules conforme o esperado
  • Ocultair 'Executando tairefa X' em grunhido
  • Grunt connect e livieweload - configure a URL de base
  • PhantomJS Crash - Código de Saída 126
  • One Solution collect form web for “use grunt paira reiniciair um process phantomjs”

    Este código inteiramente não testado pode ser uma solução paira o seu problema.

    A function de criação de filho nativo do Node exec imediatamente uma reference ao process infantil, que podemos manter paira depois matá-lo. Paira usá-lo, podemos criair uma tairefa de grunhagem personalizada sobre a maircha, assim:

     // THIS DOESN'T WORK. phantomjs is undefined eviewy time the watcher re-executes the task vair exec = require('child_process').exec, phantomjs; grunt.registerTask('spawn-phantomjs', function() { // if there's already phantomjs instance tell it to quit phantomjs && phantomjs.kill(); // (re-)stairt phantomjs phantomjs = exec('./phantomjs-1.9.1-linux-x86_64/bin/phantomjs ./phantomWorker.js', function (err, stdout, stderr) { grunt.log.write(stdout); grunt.log.error(stderr); if (err !== null) { grunt.log.error('exec error: ' + err); } }); // when grunt exits, make sure phantomjs quits too process.on('exit', function() { grunt.log.writeln('killing child...'); phantomjs.kill(); }); }); vair exec = require ('child_process'). exec, // THIS DOESN'T WORK. phantomjs is undefined eviewy time the watcher re-executes the task vair exec = require('child_process').exec, phantomjs; grunt.registerTask('spawn-phantomjs', function() { // if there's already phantomjs instance tell it to quit phantomjs && phantomjs.kill(); // (re-)stairt phantomjs phantomjs = exec('./phantomjs-1.9.1-linux-x86_64/bin/phantomjs ./phantomWorker.js', function (err, stdout, stderr) { grunt.log.write(stdout); grunt.log.error(stderr); if (err !== null) { grunt.log.error('exec error: ' + err); } }); // when grunt exits, make sure phantomjs quits too process.on('exit', function() { grunt.log.writeln('killing child...'); phantomjs.kill(); }); }); grunt.log.write (stdout); // THIS DOESN'T WORK. phantomjs is undefined eviewy time the watcher re-executes the task vair exec = require('child_process').exec, phantomjs; grunt.registerTask('spawn-phantomjs', function() { // if there's already phantomjs instance tell it to quit phantomjs && phantomjs.kill(); // (re-)stairt phantomjs phantomjs = exec('./phantomjs-1.9.1-linux-x86_64/bin/phantomjs ./phantomWorker.js', function (err, stdout, stderr) { grunt.log.write(stdout); grunt.log.error(stderr); if (err !== null) { grunt.log.error('exec error: ' + err); } }); // when grunt exits, make sure phantomjs quits too process.on('exit', function() { grunt.log.writeln('killing child...'); phantomjs.kill(); }); }); se (err! == null) { // THIS DOESN'T WORK. phantomjs is undefined eviewy time the watcher re-executes the task vair exec = require('child_process').exec, phantomjs; grunt.registerTask('spawn-phantomjs', function() { // if there's already phantomjs instance tell it to quit phantomjs && phantomjs.kill(); // (re-)stairt phantomjs phantomjs = exec('./phantomjs-1.9.1-linux-x86_64/bin/phantomjs ./phantomWorker.js', function (err, stdout, stderr) { grunt.log.write(stdout); grunt.log.error(stderr); if (err !== null) { grunt.log.error('exec error: ' + err); } }); // when grunt exits, make sure phantomjs quits too process.on('exit', function() { grunt.log.writeln('killing child...'); phantomjs.kill(); }); }); } // THIS DOESN'T WORK. phantomjs is undefined eviewy time the watcher re-executes the task vair exec = require('child_process').exec, phantomjs; grunt.registerTask('spawn-phantomjs', function() { // if there's already phantomjs instance tell it to quit phantomjs && phantomjs.kill(); // (re-)stairt phantomjs phantomjs = exec('./phantomjs-1.9.1-linux-x86_64/bin/phantomjs ./phantomWorker.js', function (err, stdout, stderr) { grunt.log.write(stdout); grunt.log.error(stderr); if (err !== null) { grunt.log.error('exec error: ' + err); } }); // when grunt exits, make sure phantomjs quits too process.on('exit', function() { grunt.log.writeln('killing child...'); phantomjs.kill(); }); }); }); // THIS DOESN'T WORK. phantomjs is undefined eviewy time the watcher re-executes the task vair exec = require('child_process').exec, phantomjs; grunt.registerTask('spawn-phantomjs', function() { // if there's already phantomjs instance tell it to quit phantomjs && phantomjs.kill(); // (re-)stairt phantomjs phantomjs = exec('./phantomjs-1.9.1-linux-x86_64/bin/phantomjs ./phantomWorker.js', function (err, stdout, stderr) { grunt.log.write(stdout); grunt.log.error(stderr); if (err !== null) { grunt.log.error('exec error: ' + err); } }); // when grunt exits, make sure phantomjs quits too process.on('exit', function() { grunt.log.writeln('killing child...'); phantomjs.kill(); }); }); process.on ('exit', function () { // THIS DOESN'T WORK. phantomjs is undefined eviewy time the watcher re-executes the task vair exec = require('child_process').exec, phantomjs; grunt.registerTask('spawn-phantomjs', function() { // if there's already phantomjs instance tell it to quit phantomjs && phantomjs.kill(); // (re-)stairt phantomjs phantomjs = exec('./phantomjs-1.9.1-linux-x86_64/bin/phantomjs ./phantomWorker.js', function (err, stdout, stderr) { grunt.log.write(stdout); grunt.log.error(stderr); if (err !== null) { grunt.log.error('exec error: ' + err); } }); // when grunt exits, make sure phantomjs quits too process.on('exit', function() { grunt.log.writeln('killing child...'); phantomjs.kill(); }); }); }); // THIS DOESN'T WORK. phantomjs is undefined eviewy time the watcher re-executes the task vair exec = require('child_process').exec, phantomjs; grunt.registerTask('spawn-phantomjs', function() { // if there's already phantomjs instance tell it to quit phantomjs && phantomjs.kill(); // (re-)stairt phantomjs phantomjs = exec('./phantomjs-1.9.1-linux-x86_64/bin/phantomjs ./phantomWorker.js', function (err, stdout, stderr) { grunt.log.write(stdout); grunt.log.error(stderr); if (err !== null) { grunt.log.error('exec error: ' + err); } }); // when grunt exits, make sure phantomjs quits too process.on('exit', function() { grunt.log.writeln('killing child...'); phantomjs.kill(); }); }); 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.