我有一个包含3个子文件夹(客户端,服务器,资产)的文件夹(项目)。每个子文件夹都有一个不同的命令来启动和处理我需要启动3个应用程序的项目。这是文件夹布局和我用来启动每个子项目的命令:
- 项目
- 客户(离子服务)
- 服务器(节点索引)
- assets(http-server -p 8082)
目前,我转到三个文件夹中的每个文件夹并启动每个应用程序。为了使流程更加标准化,每个子项目都有一个带有启动脚本的package.json,所以我只是cd subfolder && npm start
。
我的问题:是否可以在父文件夹上使用npm(即在那里写一个package.json
),这样我就可以运行以下命令并拥有相同(或类似)的影响?
项目> npm start
我尝试使用包parallelshell
,但它没有用(可能是因为cd
:
"scripts": {
"start": "parallelshell 'cd app && ionic serve' 'cd api && npm start' 'cd assets && npm start'",
}
答案 0 :(得分:43)
你可以同时使用""实现这一目标。所以你要创建一个类似于以下内容的package.json:
...
"scripts": {
"client": "cd client && npm start",
"server": "cd server && npm start",
"assets": "cd assets && ionic serve",
"start": "concurrently \"npm run client\" \"npm run server\" \"npm run assets\" ",
},
...
"devDependencies": {
"concurrently": "^1.0.0"
}
...
注意:这将同时启动所有三个进程,这意味着您将获得所有三个进程的混合输出(如已提到的topheman)
答案 1 :(得分:5)
回答真的很晚了,但是您获得了内置模式--prefix
例如:
-package.json
-/dist/ssr/package.json
# package.json in root
npm run start --prefix dist/ssr
答案 2 :(得分:4)
问题是所有三个脚本都是类似服务器启动的脚本任务,这意味着它们不像运行的构建任务(例如) 10秒并停止这个过程。
对于其中每一个,您启动它们,该过程将无限期地继续。
您可以使用forever
之类的守护程序方式启动所有这些,但在您的情况下,您处于开发模式(因此您希望所有日志< / strong>,你不希望nodejs服务器混合中的错误与离子的错误。)。
如果您不介意混合日志:https://www.npmjs.com/package/forever(我认为这与parallelshell几乎完全相同......)