nodemon试用(安装和配置)

最近在学nodejs,一门前端人的后台语言(其实是基于v8内核的js runtime),在学着写一个聊天室,在不断修改服务器所在的js文件时要不断的重启服务器,后来才发现有个神奇的插件nodemon——用来监视node.js应用程序中的任何更改并自动重启服务,非常适合用在开发环境中。

nodemon 的安装

npm install -g nodemon
安装完 nodemon 后,就可以用 nodemon 来代替 node 来启动应用:

nodemon [node.js文件](相当于 node [node.js文件])

常用功能

如果没有在应用中指定端口,可以在命令中指定:

nodemon ./server.js localhost 8080
可以运行 debug 模式:

nodemon –debug ./server.js 80
查看帮助,帮助里面有很多选项都是一目了然:

nodemon -h 或者 nodemon -help

常用配置

nodemon 比较流行的原因之一就是它的可配置性比较高,下面是官网给出的配置文件 nodemon.json 的例子,加上我自己了解到的有用的一些配置,开发环境建议可以把每个参数都写上备用,生产环境就把没有必要的参数去掉,有些字段是可以在命令行模式以参数形式给出的,可以通过 -h 查看,下面逐个解释:

1 {
2 "restartable": "rs",
3 "ignore": [
4 ".git",
5 "node_modules/**/node_modules"
6 ],
7 "verbose": true,
8 "execMap": {
9 "": "node"
10 "js": "node --harmony"
11 },
12 "events": {
13 "restart": "osascript -e 'display notification \"App restarted due to:\n'$FILENAME'\" with title \"nodemon\"'"
14 },
15 "watch": [
16 "test/fixtures/",
17 "test/samples/"
18 ],
19 "env": {
20 "NODE_ENV": "development",
21 "PORT": "3000"
22 },
23 "ext": "js json",
24 "legacy-watch": false
25 }

restartable:重启的命令,默认是 rs ,可以改成你自己喜欢的字符串。当用 nodemon 启动应用时,可以直接键入 rs 直接重启服务。除了字符串值外,还可以设置 false 值,这个值的意思是当 nodemon 影响了你自己的终端命令时,设置为 false 则不会在 nodemon 运行期间监听 rs 的重启命令。

ignore:忽略的文件后缀名或者文件夹,文件路径的书写用相对于 nodemon.json 所在位置的相对路径,下同。nodemon 会默认忽略一些文件,默认忽略的文件有:.git, node_modules, bower_components, .sass-cache,如果这些文件想要加入监控,需要重写默认忽略参数字段 ignoreRoot,比如加入:”ignoreRoot”: [“.git”, “bower_components”, “.sass-cache”],然后在 watch 中将 node_modules 文件路径加入监控,那么 node_modules 内的文件也加入了监控了。

verbose:true 表示输出详细启动与重启信息,如下图:

false 表示不输出这些运行信息,如下图:

execMap:运行服务的后缀名和对应的运行命令,”js”: “node –harmony” 表示用 nodemon 代替 node –harmony 运行 js 后缀文件;”” 指 www 这些没有后缀名的文件;默认的 defaults.js 配置文件会识别一些文件:py: ‘python’,rb: ‘ruby’。

events:这个字段表示 nodemon 运行到某些状态时的一些触发事件,总共有五个状态:

start - 子进程(即监控的应用)启动

crash - 子进程崩溃,不会触发 exit

exit - 子进程完全退出,不是非正常的崩溃

restart - 子进程重启

config:update - nodemon 的 config 文件改变

状态后面可以带标准输入输出语句,比如 mac 系统下设置: “start”: “echo ‘app start’”,那么启动应用时会输出 app start 信息,其他类似命令如 ls,ps 等等标准命令都可以在这里定义。

watch:监控的文件夹路径或者文件路径。

env:运行环境 development 是开发环境,production 是生产环境。port 是端口号。

ext:监控指定后缀名的文件,用空格间隔。默认监控的后缀文件:.js, .coffee, .litcoffee, .json。但是对于没有文件后缀的文件,比如 www 文件,我暂时找不到怎么用 nodemon 去监控,就算在 watch 中包含了,nodemon 也会忽略掉。

注:关于监控以及忽略文件修改有个顺序的问题,或者说优先级,首先 nodemon 会先读取 watch 里面需要监控的文件或文件路径,再从文件中选择监控 ext 中指定的后缀名,最后去掉从 ignore 中指定的忽略文件或文件路径。

legacy-watch:nodemon 使用 Chokidar 作为底层监控系统,但是如果监控失效,或者提示没有需要监控的文件时,就需要使用轮询模式(polling mode),即设置 legacy-watch 为 true,也可以在命令行中指定:

n o d e m o n l e g a c y w a t c h nodemon -L # 简写
下面贴出 nodemon 的默认配置文件 default.js

1 // default options for config.options
2 module.exports = {
3 restartable: 'rs',
4 colours: true,
5 execMap: {
6 py: 'python',
7 rb: 'ruby',
8 // more can be added here such as ls: lsc - but please ensure it's cross
9 // compatible with linux, mac and windows, or make the default.js
10 // dynamically append the `.cmd` for node based utilities
11 },
12 ignoreRoot: ['.git', 'node_modules', 'bower_components', '.sass-cache'],
13 watch: ['*.*'],
14 stdin: true,
15 runOnChangeOnly: false,
16 verbose: false,
17 // 'stdout' refers to the default behaviour of a required nodemon's child,
18 // but also includes stderr. If this is false, data is still dispatched via
19 // nodemon.on('stdout/stderr')
20 stdout: true,
21 };

猜你喜欢

转载自blog.csdn.net/qq_16756237/article/details/81637995