2015-09-25 6 views
7

Mam folder (projekt) z 3 podfolderami (klient, serwer, zasoby). Każdy podfolder ma inne polecenie uruchomienia i pracy nad projektem, którego potrzebuję, aby uruchomić 3 aplikacje. Jest to układ folderów i polecenia używam na rozpoczęcie każdego podprojektu:Czy możliwe jest użycie npm do uruchamiania skryptów w wielu podfolderach?

  • projekt
    • klienta (jonowa służyć)
    • serwer
    • (indeks węzła)
    • aktywa (serwer HTTP -p 8082)

Obecnie przechodzę do każdego z trzech folderów i uruchamiam każdą z aplikacji. Aby proces był bardziej standardowy, każdy podprojekt ma pakiet package.json ze skryptem startowym, więc po prostu cd subfolder && npm start.

Moje pytanie: jest to możliwe do wykorzystania na KMP folderu nadrzędnego (czyli napisać package.json tam) w taki sposób, że mogę po prostu uruchom następujące polecenie i mają ten sam (lub podobny) efekt?

projekt> npm zaczynają

Próbowałem przy użyciu pakietu parallelshell, ale nie zrobił praca (prawdopodobnie ze względu na cd:

"scripts": { 
    "start": "parallelshell 'cd app && ionic serve' 'cd api && npm start' 'cd assets && npm start'", 
} 

Odpowiedz

4

Problem polega na tym, że wszystkie swoje trzy Skrypty to uruchamianie serwera, takie jak zadanie skryptu, co oznacza, że ​​nie są one podobne do zadania kompilacji (na przykład), który działa przez 10 sekund i zatrzymać proces.

Dla każdego z nich, ich uruchomić i proces trwa indefinitly.

Można uruchomić wszystkie z nich w sposób demona z czymś forever, ale w twoim przypadku, że jesteś w trybie dev (tak chcesz wszystkie dzienniki, a nie chcesz błędów z serwera nodejs mieszany z jonowym ...).

W przypadku, gdy nie przeszkadza o dzienniki mieszających: https://www.npmjs.com/package/forever (zakładam to robi prawie to samo, co parallelshell ...)

20

Można użyć „równolegle” do osiągnięcia tego celu. Tak by utworzyć package.json który wygląda mniej więcej tak:

... 
"scripts": { 
    "client": "cd client && npm start", 
    "server": "cd server && npm start", 
    "assets": "cd assets && ionic serve", 
    "start": "concurrent \"npm run client\" \"npm run server\" \"npm run assets\" ", 
}, 
... 
"devDependencies": { 
    "concurrently": "^1.0.0" 
} 
... 

Uwaga: Spowoduje to uruchomienie wszystkich trzech procesów jednocześnie, co oznacza, że ​​masz wyjścia mieszane wszystkich trzech (jak już wspomniano) topheman

Powiązane problemy