背景:
在做前端项目的一个需求里,需要启动两个监听的服务,当然可以打开两个终端去分别监听,不过那样太繁琐了,能不能直接在一个终端实现呢,经过研究,发现是可以的,下面来仔细说一下吧:
什么是监听服务和执行服务
执行服务:就是我们一次性执行的服务,只会执行一次,执行了就结束了,没有后续,
例子:webpack
监听服务:启动之后不会关闭,只是处于监听状态,每次我们做了动作都会有相应的处理
例子:webpack-dev-server
此时没退出,说明还在监听
启动多监听服务的问题
- 首先需要npm的package.json,在scripts里面配置命令,如下:
"scripts": {
"start":" npm run node && npm run devserver ",
"devserver": "webpack-dev-server",
"dev": "webpack",
"node": "node server.js"
},
- start命令很特殊,可以在里面配置多个执行脚本
- 当我们配置了监听脚本时候,后面的脚本就不会执行了,因为npm会阻塞它
- 如果配置了多个执行脚本,没有监听脚本,那么执行是没有问题的,以内此时没有任何阻塞
解决多监听服务启动的问题
- 首先下载 :npm install concurrently -D
- 在scripts脚本里配置 如下
"scripts": {
"start": "concurrently \"npm run node\" \"npm run devserver\" ",
"devserver": "webpack-dev-server",
"dev": "webpack",
"node": "node server.js"
},
- start里的脚本就可以实现该任务,利用了我们安装的concurrently包
- 启动过程:
同时启动npm run devserver 和 node server.js,这两个服务都是监听服务类型