2015-12-08 4 views

Antwort

0

Ich denke, dass heroku local wird watch für Änderungen an statischen Ressourcen (clientseitige Code). Es ist jedoch offensichtlich nicht ideal, den Server manuell mit jedem Quellcode zu starten, den Sie am Webserver vornehmen (serverseitiger Code).

Wenn Sie eine NodeJS-Anwendung erstellen, ist mein Vorschlag, den Befehl watch, den Gulp bietet, zu versuchen. Dies erfordert jedoch auch, dass Sie (a) Gulp installieren und (b) das Gulp-Skript schreiben. Wieder würde diese Lösung nur für NodeJS funktionieren, und diese Schritte wären nicht erforderlich, wenn heroku local die Dateien für Sie angesehen würden.

  1. Installieren NodeJS
  2. Installieren Gulp

    npm install gulp --save-dev 
    
  3. das Gulp Skript hinzufügen (wo procfile lebt)

    Hinweis: nicht in der Lage, die folgenden watch Code zu erhalten, arbeiten erfolgreich, aber es könnte eine Vorlage für andere zur Verfügung stellen, um eine funktionierende Lösung zu erstellen.

    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. Führen Sie das Skript Gulp (von Verzeichnis, in dem procfile lebt)

    gulp heroku-local:watch 
    
+0

Dank. Aber es konnte nicht funktionieren ... – IsmailS

+0

Haben Sie die 'spawn' Methode probiert? https://nodejs.org/api/child_process.html # child_process_child_process_spawn_command_args_options Das könnte funktionieren ... – tfmontague

+0

Ich verwende den Gulp Watcher, um Knotenprozess zu beenden, indem ich eine spezielle Route, die ich erstellt habe, '/ killme' besuche und dann wieder starte. Natürlich sollte diese URL nicht auf der Live-Website existieren, ist aber lokal nützlich. im gulpfile: 'exec ("curl http: // localhost: 5000/killme; Heroku local");' in meiner node.js/express App: '' 'router.get ('/ killme ', Funktion (req, res) { \t process.exit (1); }); '' ' – Lucas

2

heroku local nur verwendet node-foreman (https://www.npmjs.com/package/heroku-local), so dass es leichter ist, dass für das Ansehen direkt zu verwenden.

Zuerst installieren foreman und nodemon:

npm i --save-dev foreman nodemon 

Nun müssen Sie zwei Skripte in Ihrem package.json einzurichten:

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

Sie jetzt die App ausführen können, während sie das Verzeichnis Uhren und lädt bei Änderungen mit

npm run watch 
4

Der einfachste Weg, dies zu tun, ist, nodemon mit heroku local als ausführbare Datei auszuführen - also nodemon --exec "heroku local".

heroku local wird jedoch mit einem Nicht-Null-Exit-Code für das standardmäßige Nodemon-Shutdown-Signal (SIGUSR2) beendet. Daher müssen Sie nodemon ein zusätzliches Flag hinzufügen, um das Interrupt-Signal auf SIGTERM zu setzen.

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

(getestet mit [email protected], [email protected], [email protected])

+0

Dies funktioniert wie gewünscht - neu starten' heroku local' mit allen Änderungen. –

+0

Funktioniert gut! Vielen Dank! – ohjeeez

Verwandte Themen