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

时间:2015-09-25 13:58:19

标签: npm

我有一个包含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'",
}

3 个答案:

答案 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几乎完全相同......)