Powiedzmy, że tak
"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\""
},
Jakie polecenie NPM mogę uruchomić, aby wszystkie te skrypty były uruchamiane sekwencyjnie. Kiedy używam naprawy przed / po, uruchamiają się sekwencyjnie, ale nie czekają na zakończenie skryptu nadrzędnego przed wykonaniem. Zakładam, że jedynym rozwiązaniem jest: Jak sprawić, aby zadania Gulp były uruchamiane sekwencyjnie podczas odpalania poleceń powłoki w funkcji pomocniczej async.series? ? Wiem, że można to zrobić za pomocą Gulp, ale chciałbym na razie pozostać przy NPM, aby zbadać jego możliwości. Dzięki za pomoc!
javascript
node.js
npm
cmd
Ryż
źródło
źródło
Start
polecenia powinieneś móc użyć/wait
parametru (Uruchom aplikację i poczekaj, aż się zakończy)Odpowiedzi:
Wywołaj te skrypty za pomocą npm run i połącz je z podwójnym ampersandem
&&
:Wyjaśnienie:
&&
(podwójny ampersand) do sekwencyjnego wykonywania.&
(pojedynczy znak ampersand) do wykonywania równoległego.źródło
&&
są oceniane przez powłokę i nie działają w systemie Windows.&&
składnia jest konstrukcją UNIX. Będzie działać niepoprawnie na komputerach z systemem Windows, co może mieć poważne konsekwencje dla procesu kompilacji.npm-run-all
dokumentacją: „czasami używamy&
do uruchamiania wielu poleceń równolegle, ale system Windows 'cmd.exe
... nie obsługuje [tego operatora]”. Wygląda więc na to, że masz rację - przynajmniej z moich krótkich badań wynika, że&&
operator wydaje się doskonale kompatybilny z różnymi platformami.Zgodnie ze świetną odpowiedzią @ Mobiletainment , możesz również użyć npm-run-all, aby polecenie było znacznie krótsze i bardziej czytelne. W Twoim przypadku:
run-s
jest skrótemnpm-run-all
, który uruchamia wszystkie podane skrypty npm sekwencyjnie, stąd-s
(run-s
jest krótszą wersjąnpm-run-all -s
).źródło
Możesz po prostu umieścić je w innym skrypcie.
"start": "pre-build && build_logic && post_build && exit"
źródło
start
Komenda realizujemy w oknach technicznie jest gotowy. Użyj/wait
flagi z,start
aby wymusić, abystart
aplikacja pozostała otwarta do czasu zakończenia również metody wewnętrznej.start notepad
z wiersza polecenia, a następnie spójrz na oryginalny wiersz polecenia. Powinieneś móc wpisać inne polecenie. Następnie biegnijstart /wait notepad
.start
Komenda powinna nadal „run” w czasie, gdy okno jest otwarte schowek (spójrz w wierszu Znowu poleceń). Następnie po zamknięciu notatnikastart
zostanie zakończone.Można poprzedzić skrypty
pre
ipost
tak są one uruchamiane automatycznie:następnie uruchomić
npm run build
źródło
możesz spróbować:
źródło
Możesz użyć npm-run-all do łączenia wielu poleceń na wiele różnych sposobów
Na przykład, jeśli masz w swoim skrypcie następujące skrypty
package.json
:Możesz uruchomić je wszystkie sekwencyjnie w następujący sposób:
Zobacz to pytanie, aby dowiedzieć się, jak równolegle uruchamiać wiele poleceń npm
źródło