2015-09-25 169 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)