npm运行多个server npm-run-all通知执行多个任务
安装
npm install npm-run-all --save-dev官网地址: https://www.npmjs.com/package/npm-run-all
--parallel : 并行运行多个命令,例如:npm-run-all --parallel lint build
--serial : 多个命令按排列顺序执行,例如:npm-run-all --serial clean lint build:**
--continue-on-error : 是否忽略错误,添加此参数 npm-run-all 会自动退出出错的命令,继续运行正常的
--race : 添加此参数之后,只要有一个命令运行出错,那么 npm-run-all 就会结束掉全部的命令
使用方法
这个包提供三个命令,分别是 npm-run-all run-s run-p,其中后两个都是 npm-run-all 带参数的简写,分别对应串行和并行。
顺序执行 --serial (默认)
npm-run-all clean lint build
// 或
npm-run-all --serial clean lint build依次执行三个任务,注意如果某个脚本退出时返回值为空值,那么后续脚本默认是不会执行的,你可以使用参数 --continue-on-error 来规避这种行为。
并行执行 --parallel 
npm-run-all --parallel lint build同时执行这两个任务,需要注意如果脚本退出时返回空值,所有其它子进程都会被 SIGTERM 信号中断,同样可以用 --continue-on-error 参数禁用行为
混合执行,顺序和并行混合
npm-run-all clean lint --parallel watch:html watch:js这段命令首先按顺序执行 clean lint 两个脚本,然后同时执行 watch:html 和 watch:js 的任务。
npm-run-all a b --parallel c d --sequential e f --parallel g h i
# or
npm-run-all a b --parallel c d --serial e f --parallel g h i这段命令通过以下顺序执行:
- 顺序运行 a和b;
- 然后同时运行 c和d;
- 再依次运行 e和f;
- 最后同时执行 g,h,i。
 
- 顺序运行 
实战
项目中有多个启动项:
"scripts": {
    "dev:common": "cross-env PROJECT_NAME=common vue-cli-service serve",
    "dev:projectA": "cross-env PROJECT_NAME=projectA vue-cli-service serve",
    "dev:projectB": "cross-env PROJECT_NAME=projectB vue-cli-service serve",
    "dev:projectC": "cross-env PROJECT_NAME=projectC vue-cli-service serve",
    "dev:projectD": "cross-env PROJECT_NAME=projectD vue-cli-service serve",
    "build:common": "cross-env PROJECT_NAME=common vue-cli-service build",
    "build:projectA": "cross-env PROJECT_NAME=projectA vue-cli-service build",
    "build:projectB": "cross-env PROJECT_NAME=projectB vue-cli-service build",
    "build:projectC": "cross-env PROJECT_NAME=projectC vue-cli-service build",
    "build:projectD": "cross-env PROJECT_NAME=projectD vue-cli-service build"
  },如果添加一个启动项,可以同时启动 dev:common ; dev:projectA ; dev:projectD ; dev:projectC ; dev:projectD
添加命令如下:
"dev":"npm-run-all --parallel dev:*"运行命令 npm run dev,会启动很多

如果添加了命令为:"dev:all":"npm-run-all --parallel dev:*",则运行 npm run dev:all 会死循环,因为 dev:*,包含自身 dev:all
 
 

