nodemon 参考 —->
npm-run-all 参考 —->
nodemon
用于监控 Node.js 源代码的任何变化 和 自动重启服务器
安装:
npm install -g nodemon或npm install nodemon -D
使用:
nodemon [your node app]// 例如程序的入口文件时 server.jsnodemon server.js
配置:
在项目根目录下创建 nodemon.json 文件,如下是一些常见的配置项:
{"restartable":"rs",//重启的命令,默认是 rs"ignore":[""],//忽略的文件后缀名或者文件夹,文件路径的书写用相对于 nodemon.json 所在位置的相对路径"verbose": true, //表示输出详细启动与重启信息"execMap":{"":"node","test": "gulp test"},"events":{"start":"gulp", //子进程(即监控的应用)启动"crash":"", //子进程崩溃,不会触发 exit"exit":"", //子进程完全退出,不是非正常的崩溃"restart":"gulp", //子进程重启},"ext": "js json",//监控指定后缀名的文件,用空格间隔。默认监控的后缀文件:.js, .coffee, .litcoffee, .json。但是对于没有文件后缀的文件,比如 www 文件,我暂时找不到怎么用 nodemon 去监控,就算在 watch 中包含了,nodemon 也会忽略掉"watch":["./src/**"],"env":{"NODE_ENV":"env", // env: 是开发环境; 运行环境 development; production 是生产环境"PORT":"3000"},"legacy-watch":false, // nodemon 使用 Chokidar 作为底层监控系统,但是如果监控失效,或者提示没有需要监控的文件时,就需要使用轮询模式(polling mode),即设置 legacy-watch 为 true,也可以在命令行中指定}
npm-run-all
在开发基于 Node.js 的项目时,很多时候都需要同时运行多个
scripts命令,用于开发或者是用于项目的打包构建。这个时候如果是在终端里多个启动就会显得特别繁琐,那么 npm-run-all这个命令行工具就可以很方便的解决这个问题
多个启动命令
首先来找一个项目的 scripts 配置作为示例,该项目的启动命令配置如下:
{"dev:start": "nodemon --watch build exec node \"build/bundle.js\"","dev:build:client": "webpack --config webpack.config.client.js --watch","dev:build:server": "webpack --config webpack.config.server.js --watch"}
这是一个基于 React 的服务器端渲染项目,可以看到要启动此项目,需要启动至少三个命令:npm run dev:start, npm run dev:build:client, dev:build:server, 那么就需要在终端里开三个窗口运行,这样做是非常麻烦的,那么下面就用 npm-run-all 来优化一下配置。
安装及使用
首先是安装,作为一个 npm 包,安装起来很方便,直接运行如下命令即可:
npm i npm-run-all --save-dev# 或者 yarn add npm-run-all --dev
运行参数
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就会结束掉全部的命令
改进配置
在了解了用法之后,使用起来就非常简单了,下面来对文章开头提到的 scripts 配置进行优化,我们来添加一个 "dev": "npm-run-all --parallel dev:**" 命令,改进后的配置如下:
{"dev": "npm-run-all --parallel dev:**","dev:start": "nodemon --watch build exec node \"build/bundle.js\"","dev:build:client": "webpack --config webpack.config.client.js --watch","dev:build:server": "webpack --config webpack.config.server.js --watch"}
改进之后,我们运行项目时直接执行 npm run dev 就可以了,一条命令启动了多个服务,这样就极大的简化了操作流程。
