2015-08-20 12 views
5

Ich experimentiere mit der Einrichtung einer Entwicklungsumgebung, um nur NPM zu verwenden, ohne die Verwendung von grunt.js oder bower.js.npm Skripte nodemon - js und scss Dateien auf Änderungen beobachten

folgte ich dieses Tutorial: http://beletsky.net/2015/04/npm-for-everything.html

Ich verwende nodemon meinen Js und .scss Dateien für Änderungen zu beobachten, die den Knoten Server neu gestartet wird. Also in meinem package.json Datei unter Skripten habe ich

Skripte:

"watch-js": "nodemon -e js --watch public/js -x \"npm run build-js\"",

"watch-sass": "nodemon -e scss --watch public/sass -x \"npm run build-sass\"",

"watch": "npm run watch-js & npm run watch-sass"

Aber wenn ich npm run watch führen Sie es Uhren nur für die Öffentlichkeit/js Dateien ändern. Und es löst dementsprechend einen Build aus.

Aber es wird nicht für die Sass-Dateien zu sehen.

Versionen: node v0.10.36nodemon v1.4.1

ich auch ein Build-Skript, das, wenn ich kompiliert den Sass CSS laufen, so dass mein Build-Sass Skript

"build": "npm run build-js & npm run build-sass", 
"watch": "npm run watch-js & npm run watch-sass" 
+0

Ich habe versucht, dies einzurichten, und es scheint gut zu funktionieren, wie Sie es haben. Ich ersetzte Ihr '-x' durch' -x \ "echo js file changed" für js und sass, und die Nachrichten wurden für beide als erwartet angezeigt. So scheint es, dass nodemon funktioniert. Vielleicht ist das Problem in Ihrem 'Build-Sass'-Skript? – Robbie

+0

build-sass-Skript: '" build-sass ":" node-sass public/sass/main.scss public/build/main.css ",' Ich habe auch ein Build-Skript mit dem Build-Skript sass und es funktioniert gut – conor909

+0

Wenn du sagst "Es wird nicht auf die Sass-Dateien achten", meinst du, dass die Sass-Dateien nicht neu erstellt werden oder dass Nodemon die Aufgabe nicht erneut ausführt? – Robbie

Antwort

4

Wenn Sie Windows verwenden, können Sie the windows problem

begegnen werden, da npm angewiesen ist auf die Betriebssysteme Shell-Skripte ausführen Befehle, können sie schnell unportable werden. Während Linux, Solaris, BSD und Mac OSX mit Bash als Standard-Shell vorinstalliert sind, tut Windows das nicht. Unter Windows wird npm für diese Dinge mit dem Windows-Eingabeaufforderung greifen

Wenn ja, können Sie mit parallelshell oder npm-run-all für eine bessere Cross-Plattform-Unterstützung versuchen. Diese

+2

Großartig, das hat funktioniert! Ich habe Parallelshell installiert und meine Skripts geändert, um diese Struktur zu haben: "watch": "parallelshell" npm run watch-js \ "\ npm run watch-sass \" "- schätze @ Robbie – conor909

-3

Versuch zu ändern, ok sein sollte

"watch": "npm run watch-js & npm run watch-sass" 

zu

"watch": "npm run watch-js && npm run watch-sass" 
+0

, der leider auch nicht funktioniert, das gleiche Ergebnis wie ein einzelnes '&' – conor909

+5

das einzelne '&' ist tatsächlich gültig, es erlaubt die Aufgaben, parallel zu laufen. Es funktioniert nicht wirklich, wenn Sie '&&' verwenden, weil das zweite Skript darauf wartet, dass das erste beendet wird, und es tut es nicht – Robbie

1

funktioniert für mich in Mac OS

  1. Installieren nodemon

    npm install --save-dev nodemon

  2. installieren npm-run-all:

    npm install --save-dev npm-run-all

  3. In-Paket.json fügen Sie zwei Skripte:

    "startn": "nodemon ./app.js", "watch-jscss": "gulp watch"

    • Wo app.js 'ist der Server-Datei
    • "schluck Uhr" durch sein ersetzen, was auch immer Aufgabe macht einen sass beobachten
  4. in der Konsole:

    npm-run-all --parallel watch-jscss startn