2016-04-15 14 views
2

Ich verwende das npm-Paket gulp-nodemon, um meinen Webserver zu starten.Übergabe von CLI-Argumenten durch gulp-nodemon

Das Problem, das ich habe, ist, dass ich CLI-Argumente nicht an mein Server-Skript übergeben kann.

würde Ich mag so etwas schreiben:

gulp --argument1 value1

Und die nodemon sollte coffee server.coffee --argument1 value1

Meine aktuelle nodemon Aufgabe dann rufen:

# nodemon development server 
gulp.task 'nodemonServer', () -> 
    nodemon({ 
    script: 'server.coffee' 
    ext: 'coffee' 
    watch: ['server/', 'server.coffee'] 
    env: { 'NODE_ENV': 'development' } 
    }) 
    .on 'crash',() -> 
    notifyServerError() 

Ich habe versucht zu schreiben script: 'server.coffee --argument1 value1' aber ich bekomme einen seltsamen Fehler: File not found: C:\Users\user\projectRoot\"server.coffee

Ja, mit dem "im Dateipfad. Hier ist das Protokoll:

[13:13:10] [nodemon] starting `coffee.cmd "server.coffee --argument1 value1"` 
File not found: C:\Users\user\projectRoot\"server.coffee 

Vielen Dank.

+0

Ist das Argument fest oder werden Sie andere (oder keine) Argumente liefern auch? –

+0

@RahatMahbub Ich möchte die Argumente, die gulp übergeben werden, an das Serverskript weitergeben, 'gulp --argument1 value1' ergibt 'coffee server.coffee --argument1 value1' –

+0

Wenn es eine begrenzte Anzahl von Argumenten gibt,' yargs' kann verwendet werden, um arg und value und conditionally übergeben es nodemon als nodeArgs. –

Antwort

2

Verwenden args alle Argumente zu übergeben für coffee Befehl. Dies sind die Anweisungen, die NACH dem Skriptdateinamen übergeben werden.

Verwenden Sie exec, um alle Kaffeeoptionen zusammen mit der ausführbaren Datei coffee zu übergeben. Diese werden VOR dem Skriptdateinamen übergeben.

var gulp = require('gulp'); 
var nodemon = require('gulp-nodemon'); 
gulp.task('nodemonServer', function() { 
    nodemon({ 
    script: 'server.coffee', 
    exec: 'coffee -p', 
    args: ['--argument','value1'], 
    ext: 'coffee' 
    , env: { 'NODE_ENV': 'development' } 
    }) 
}) 

Um den eigentlichen Befehl von nodemon gebraucht, DEBUG=nodemon

DEBUG=nodemon gulp nodemonServer

die Protokolle verwenden:

nodemon bus new listener: reset (0) +0ms 
    nodemon bus new listener: reset (0) +6ms 
    ... 
[13:47:20] [nodemon] starting `coffee -p server.coffee --arguments value1` 
    nodemon spawning +0ms coffee -p server.coffee --arguments value1 
+0

Vielen Dank, es hat perfekt funktioniert: D –

0

Nach einigen Proben im gulp-nodemon Repository können Sie verwenden:

nodeArgs: ['--some-arg']

Zum Beispiel:

# nodemon development server 
gulp.task 'nodemonServer', () -> 

    nodemon({ 
    script: 'server.coffee' 
    ext: 'coffee' 
    watch: ['server/', 'server.coffee'] 
    env: { 'NODE_ENV': 'development' } 
    nodeArgs: ['--argument1', 'value1'] 
    }) 

    .on 'crash',() -> 
    notifyServerError() 

Quelle: Example gulpfile from gulp-nodemon

+1

Dies funktioniert leider nur für die Argumente, die an den ausführbaren Knoten übergeben werden, nicht an das Server-Skript selbst. –

Verwandte Themen