Nehmen wir an, ich habe
"scripts": {
"pre-build": "echo \"Welcome\" && exit 1",
"build_logic": "start cmd.exe @cmd /k \"yo esri-appbuilder-js:widget && exit 1\"",
"post_build": "start C:\\WebAppBuilderForArcGIS\\startupShortcut",
"exit" : "start cmd.exe @cmd /k \"echo \"goodbye\" && exit 1\""
},
Welchen NPM-Befehl kann ich ausführen, damit alle diese Skripte nacheinander gestartet werden? Wenn ich Pre / Post-Fixing verwende, werden sie nacheinander gestartet, aber sie warten nicht, bis das übergeordnete Skript fertig ist, bevor sie ausgeführt werden. Ich gehe davon aus, dass die einzige Lösung wie folgt lautet: Wie kann ich Gulp-Aufgaben nacheinander auslösen, wenn Shell-Befehle in einer Hilfsfunktion von async.series ausgelöst werden? ? Ich weiß, dass dies mit Gulp möglich ist, aber ich möchte vorerst bei NPM bleiben, um seine Fähigkeiten zu erkunden. Vielen Dank für jede Hilfe!
javascript
node.js
npm
cmd
Reis
quelle
quelle
Start
Befehlsdokumentation sollten Sie in der Lage sein,/wait
Parameter zu verwenden (Anwendung starten und warten, bis sie beendet ist)Antworten:
Rufen Sie diese Skripte über npm run auf und verketten Sie sie mit doppeltem kaufmännischem Und
&&
:Erläuterung:
&&
(doppeltes kaufmännisches Und) für die sequentielle Ausführung.&
(einzelnes kaufmännisches Und) für die parallele Ausführung.quelle
&&
werden von der Shell ausgewertet und funktionieren unter Windows nicht.&&
Syntax ein UNIX-Konstrukt. Auf Windows-Computern verhält es sich falsch, was möglicherweise schwerwiegende Folgen für Ihren Erstellungsprozess hat.npm-run-all
Dokumenten heißt es: "Manchmal führen wir&
mehrere Befehle gleichzeitig aus, aber Windows 'cmd.exe
... unterstützt [diesen Operator] nicht." Es scheint also, dass Sie Recht hatten - zumindest nach meiner kurzen Recherche&&
scheint der Betreiber perfekt plattformübergreifend kompatibel zu sein.Nach der großartigen Antwort von @ Mobiletainment können Sie auch npm-run-all verwenden , um den Befehl viel kürzer und lesbarer zu machen. In deinem Fall:
run-s
ist eine Verknüpfungnpm-run-all
, die alle angegebenen npm-Skripte nacheinander ausführt, daher die-s
(run-s
ist eine kürzere Version vonnpm-run-all -s
).quelle
Sie können sie einfach in ein anderes Skript einfügen.
"start": "pre-build && build_logic && post_build && exit"
quelle
start
Befehl, den Sie technisch in Windows ausführen, ist beendet. Verwenden Sie das/wait
Flag mit, umstart
zu erzwingen, dass diestart
Anwendung geöffnet bleibt, bis auch die interne Methode abgeschlossen ist.start notepad
eine Eingabeaufforderung aus und sehen Sie sich die ursprüngliche Eingabeaufforderung an. Sie sollten in der Lage sein, einen anderen Befehl einzugeben. Dann rennestart /wait notepad
. Derstart
Befehl sollte weiterhin "ausgeführt" werden, während Ihr Notizblockfenster geöffnet ist (sehen Sie sich die Eingabeaufforderung erneut an). Sobald Sie den Editor schließen, ist der Vorgangstart
abgeschlossen.Sie können Ihre Skripts prefix
pre
undpost
so werden sie automatisch ausgeführt werden:dann renne
npm run build
quelle
Du kannst es versuchen:
quelle
Sie können npm-run-all verwenden , um mehrere Befehle auf viele verschiedene Arten zu kombinieren
Zum Beispiel, wenn Sie die folgenden Skripte in Ihrem hatten
package.json
:Sie können sie alle nacheinander wie folgt ausführen:
In dieser Frage erfahren Sie, wie Sie mehrere npm-Befehle parallel ausführen
quelle