2013-10-10 6 views
5

Ich habe vor kurzem eine Liebe zu Gruntjs genommen und habe mich bei jeder Gelegenheit glücklich gemacht, mein Entwicklungsleben so viel einfacher zu machen. Momentan habe ich es meine SASS-Dateien kompilieren, Uhren laufen lassen und nodemon verwenden, um meinen Knotenserver zu aktualisieren, während ich an der App arbeite.Gruntjs - Ausführen mehrerer Blockieraufgaben in einer bestimmten Reihenfolge (Mongo & Node.js)

Also hier ist, wo ich den Morgen damit verbracht habe, mich selbst verrückt zu machen. Ich möchte MongoDB starten, bevor die Node-Anwendung ausgeführt wird. Im Setup der Node-App überprüfe ich nach irgendwelchen Werten in den Datenbanken und wenn es leer ist, schiebe eine Testdatei voller Informationen in die Tabellen.

Ich habe derzeit versucht, mit grunt-concurrent und grunt-shell-spawn die erforderlichen Mongo und Node-Befehle auszuführen.

grunt.initConfig({ 
    shell: { 
    mongo: { 
     command: 'mongo' 
    }, 
    node: { 
     command: 'node app.js' 
    } 
    }, 
    concurrent: { 
    dev: { 
     tasks: ['shell:mongo','shell:node'], 
     options: { logConcurrentOutput: true } 
    } 
    } 
}); 
grunt.loadNpmTasks('grunt-concurrent'); 
grunt.loadNpmTasks('grunt-shell-spawn'); 

Gibt es eine Möglichkeit, um sicherzustellen, dass der Mongo Befehl erreicht es „blockiert“ Zustand, bevor der Knoten Aufgabe ausgeführt wird? Ich vermute, dass dies getan werden könnte, indem Sie die Node-Task async auf einer setTimeout-Funktion ausführen, aber ich möchte nicht ständig darauf warten müssen, dass Änderungen im Entwicklungsprozess wirksam werden. Zur Zeit habe ich eine separate Shell-Registerkarte für die Datenbank geöffnet und würde diese gerne in Grunt integrieren, um alles an einem Ort zu halten.

Ich bin mir nicht sicher, ob es in großem Umfang wichtig ist, aber jeder, der Node.js und MongoDB verwendet, würde das wirklich nützlich finden.

Dank

Antwort

-2

Sie Intervall, um den Service-Port des mongodb um zu sehen, zu prüfen, ob es zugänglich \

+0

Bitte versuchen Sie, http://stackoverflow.com/about zu lesen, um mehr Verständnis für Fragen/Antworten hier auf SO zu bekommen. Ihr Beitrag beantwortet die Frage nicht. Es ist mehr ein Kommentar, den Sie hinzufügen können, sobald Sie Ihre Reputation erhöhen: http://stackoverflow.com/faq#reputation –

0

ist Grunzen-nodemon mit Schale mit Versuch: Mongo, während die Angabe "Optionen: {async: true}"

concurrent: { 
     tasks: ['shell', 'nodemon'], 
     options: { 
      logConcurrentOutput: true 
     } 
    }, 
    shell: { 
     mongo: { 
      command: 'mongod', 
      options: { 
       async: true 
      } 
     } 
    }, 
nodemon: { 
     dev: { 
      script: "server.js", 
     } 
    } 

Das funktionierte für mich.

+1

Nodemon ist ein nettes Werkzeug für die Verwaltung eines Entwicklungs-Setup von Node, aber das war wirklich nicht das Punkt dieser Frage. Hast du ein Testbeispiel, in dem shell: mongo seinen blocking state _jedes Mal_ vor dem Start von nodemon erreicht? Die Async-Option garantiert dies nicht. –

Verwandte Themen