Erstellen einer .bat-Datei mit dem Befehl npm install

79

Ich habe die folgende Datei erstellt

//npminstall.bat

npm install
echo hello

Wenn ich den folgenden Befehl über die Windows 10-Befehlszeile (dos) ausführe npminstall.bat, wird der npm installBefehl ausgelöst, der Befehl wird jedoch echo hellonicht ausgelöst. Ich habe versucht, nach der ersten Zeile eine Halbfarbe wie diese npm install;einzufügen, aber alles, was ich getan habe, war, mir die Hilfeanweisungen von npm zu geben.

Wie bringe ich die zweite Linie echo hellonach dem npm install?

Zusätzliche Bemerkungen

Ich habe festgestellt, dass dies auch das gleiche Verhalten verursacht:

//npminstall.bat

webpack
echo hello

Ich denke, das liegt daran, dass sowohl der npm installBefehl als auch der webpackBefehl Zeit benötigen, um ausgeführt zu werden, und während dieser Zeit etwas tut, was ich in der zweiten Zeile nicht erwarte.

Follow-up 2

//npminstall.bat

START /WAIT npm install
echo hello

Dies scheint fast das zu tun, was ich tun möchte. Außer der Befehl npm install verursacht ein Popup-Fenster und ich muss das Popup-Fenster herunterfahren, bevor es die Ausführung fortsetzt, um Hallo Welt wiederzugeben. Kann ich das Popup-Fenster entfernen?

John
quelle

Antworten:

176

Wenn Sie von einer Batchdatei aus auf eine andere Batchdatei zugreifen, müssen Sie den Befehl CALL verwenden, um die Steuerung an den übergeordneten Prozess zurückzugeben. Andernfalls wird die Steuerung an die ausgeführte Batchdatei übergeben.

call npm install
Squashman
quelle
1
Du bist ein Lebensretter! Ich versuche, auf Jenkins einen Winkel aufzubauen, und das Skript hat es nie über die npm-Installation hinaus geschafft, bis ich den 'Aufruf' hinzugefügt habe!
Ralph Ritoch
Dadurch kann das Skript ausgeführt werden, die Batchdatei erkennt jedoch keine Fehler mehr. Wenn also etwas einbricht, zum Beispiel npm build, wird die Batch-Datei einfach fortgesetzt. Irgendeine Lösung für dieses Problem?
Muffin
2
Mir ist aufgefallen, dass der Anruf bei npm auch das Echo ausschaltet. Ich musste dies umgehen, indem ich dem call npm installmit@echo on
Wyck