2015-09-25 168 views
7

我有一個文件夾(一個項目)與3個子文件夾(客戶端,服務器,資產)。每個子文件夾都有不同的命令來啓動和處理我需要啓動3個應用程序的項目。這是文件夾佈局和命令,我用它來啓動每個子項目:是否可以使用npm在多個子文件夾中運行腳本?

  • 項目
    • 客戶端(離子服務)
    • 服務器(節點索引)
    • 資產(HTTP服務器-p 8082)

目前,我轉到三個文件夾中的每一個,並啓動每個應用程序。爲了使過程更加標準化,每個子項目都有一個包含啓動腳本的package.json,所以我只需要cd subfolder && npm start

我的問題:是有可能使用NPM在父文件夾中,這樣我可以只運行下面的命令,並且具有相同(或相似)的效果的方式(即寫package.json存在)?

項目> NPM啓動

我已經使用了包parallelshell嘗試,但它沒有(在cd可能是因爲工作:

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

回答

4

的問題是,所有你的三個腳本服務器啓動 - 如腳本任務,這意味着它們不像構建任務(例如)運行10秒並停止該過程。

對於它們中的每一個,您啓動它們該過程無限期地繼續

你可能喜歡的東西forever發動所有的人都在守護方式,但在你的情況,你是在開發模式(所以你希望所有的日誌,並你不想要的錯誤 from nodejs server mixed with the ionic one ...)。

在你不介意混合日誌情況:https://www.npmjs.com/package/forever(我認爲這確實幾乎同樣的事情parallelshell ...)

20

您可以使用「並行」,以實現這一目標。所以,你會創建的package.json它看起來像以下:

... 
"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" 
} 
... 

注意:這將同時啓動所有三個過程,這意味着你得到所有三種混合輸出(如已經提到topheman)