2015-12-08 14 views

risposta

0

Penso che heroku local sarà watch per le modifiche alle risorse statiche (codice lato client). Ma chiaramente non è l'ideale per riavviare manualmente il server con ogni modifica del codice sorgente effettuata al server Web (codice lato server).

Se si sta creando un'applicazione NodeJS, il mio suggerimento è di provare il comando watch fornito da Gulp. Tuttavia, ciò richiede anche di (a) installare Gulp e (b) scrivere lo script Gulp. Ancora una volta questa soluzione funzionerebbe solo con NodeJS, e questi passaggi non sarebbero necessari se heroku local guardasse i file per te.

  1. Installare NodeJS
  2. Installare Gulp

    npm install gulp --save-dev 
    
  3. aggiungere lo script Gulp (dove vive Procfile)

    NOTA: Non sono stati in grado di ottenere il watch seguente codice di lavoro con successo, ma potrebbe fornire un modello per gli altri per creare una soluzione di lavoro.

    var gulp = require('gulp'); 
    var exec = require('child_process').exec; 
    
    gulp.task('heroku-local', function() { 
        exec("heroku local"); 
    }); 
    
    gulp.task('heroku-local:watch', function() { 
        gulp.watch([ 
        'file-to-watch', 
        'folder-to-watch/**/*' 
        ], ['heroku-local']); 
    }); 
    
  4. Eseguire lo script Gulp (dalla directory in cui vive Procfile)

    gulp heroku-local:watch 
    
+0

Grazie. Ma non è stato possibile farlo funzionare ... – IsmailS

+0

Hai provato il metodo 'spawn'? https://nodejs.org/api/child_process.html # child_process_child_process_spawn_command_args_options Questo potrebbe funzionare ... – tfmontague

+0

Sto usando il gulp watcher per terminare il processo del nodo visitando un percorso speciale che ho creato, '/ killme', e quindi riavviandolo. Ovviamente questo URL non dovrebbe esistere sul sito web live, ma è utile localmente. nel gulpfile: 'exec ("ricciolo http: // localhost: 5000/killme; Heroku locale");' nei miei node.js/app espresso: '' 'router.get ('/ killme ', function (req, res) { \t process.exit (1); }); '' ' – Lucas

2

heroku local utilizza solo node-foreman (https://www.npmjs.com/package/heroku-local), così è più facile da usare che direttamente per la visione.

In primo luogo, installare foreman e nodemon:

npm i --save-dev foreman nodemon 

Ora, è necessario impostare due script nella vostra package.json:

{ 
    ... 
    "scripts": { 
    "start": "nf start", 
    "watch": "nodemon --watch directory-to-watch" 
    }, 
    ... 
} 

È ora possibile eseguire l'applicazione mentre si guarda quella directory e ricarica sulle modifiche con

npm run watch 
4

Il modo più semplice per eseguire questa operazione è eseguire nodemon con heroku local come eseguibile, ad esempio nodemon --exec "heroku local".

Tuttavia, heroku local esce con un codice di uscita diverso da zero per il segnale di spegnimento del nodemon predefinito (SIGUSR2), quindi è necessario aggiungere un ulteriore flag a nodemon per impostare il segnale di interruzione su SIGTERM.

nodemon --exec "heroku local" --signal SIGTERM

(testato con [email protected], [email protected], [email protected])

+0

Questo funziona come desiderato - riavvio di' heroku local' con eventuali modifiche. –

+0

Funziona alla grande! Grazie! – ohjeeez

Problemi correlati