是否可以使用npm在多个子文件夹中运行脚本?

feg*_*emo 18 npm

我有一个包含3个子文件夹(客户端,服务器,资产)的文件夹(项目).每个子文件夹都有一个不同的命令来启动和处理我需要启动3个应用程序的项目.这是文件夹布局和我用来启动每个子项目的命令:

  • 项目
    • 客户(离子服务)
    • 服务器(节点索引)
    • 资产(http-server -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'",
}
Run Code Online (Sandbox Code Playgroud)

Tho*_*ber 49

您可以使用"并发"来完成此任务.所以你要创建一个类似于以下内容的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"
}
...
Run Code Online (Sandbox Code Playgroud)

注意:这将同时启动所有三个进程,这意味着您将获得所有三个进程的混合输出(如已提到的topheman)

  • 谢谢,有点修复`“ start”:“ concurrent`->`” start“:” concurrently` (2认同)
  • 作为一个迟到的评论,但尽管如此,我想提到“npm-run-all”(https://github.com/mysticatea/npm-run-all/)。我根本没有使用过“concurrently”,不幸的是我既不能给出意见也不能给出建议。也许其他人可以启发我们? (2认同)

top*_*man 5

问题是您的三个脚本都是类似服务器启动的脚本任务,这意味着它们不像运行 10 秒并停止进程的构建任务(例如)。

对于它们中的每一个,您启动它们,并且该过程无限期地继续

你可以发动所有的人都在守护进程的方式与类似forever,但在你的情况,你是在开发模式(所以你希望所有的日志,和你不希望错误从服务器的NodeJS混合与离子之一。 ...)。

如果您不介意混合日志:https : //www.npmjs.com/package/forever(我认为这与 parallelshell 几乎相同......)


x-m*_*gix 5

回答确实很晚,但是您获得了内置模式--prefix 示例:

-package.json
-/dist/ssr/package.json
Run Code Online (Sandbox Code Playgroud)
# package.json in root
npm run start --prefix dist/ssr
Run Code Online (Sandbox Code Playgroud)

  • ps:在yarn中使用--cwd (3认同)