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

j5fpnvbx  于 2022-11-14  发布在  其他
关注(0)|答案(3)|浏览(200)

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

  • 投射
  • 客户端(离子服务器)
  • 服务器(节点索引)
  • 资产(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'",
}
yftpprvb

yftpprvb1#

你可以使用concurrently来完成这个任务,所以你可以创建一个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)

bd1hkmkf

bd1hkmkf2#

现在回答这个问题已经很晚了,但是您得到了内置选项--prefix,例如:
第一个

soat7uwm

soat7uwm3#

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

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

您可以使用forever之类的命令以守护进程方式启动所有日志,但在您的示例中,您处于dev模式(因此您需要所有日志您不希望来自nodejs服务器的错误与ionic服务器的错误混合...)。
如果您不介意混合日志:https://www.npmjs.com/package/forever(我假设这与parallelshell的功能几乎相同...)

相关问题