nodemon的使用

目的

开发中监听文件修改,达到重启node等项目服务的作用,减少手动执行:[Ctrl-C] [Up-Arrow] [Enter]。使用nodemon代替node去启动项目服务,nodemon [your node app](相当于 node [your node app]),监听进程。

安装

npm install -g nodemon

使用

命令行模式

nodemon --ignore dist/ --ignore node_modules/ --watch src -C -e js,json,css,scss,vue --debug -x "npm run build"

配置文件模式

nodemon --config nodemon.json -x "npm run build"
// nodemon.json
{
  "restartable": "rs",
  "ignore": [
    "dist",
    "node_modules/**/node_modules",
  ],
  "verbose": true,
  "execMap": {
    "js": "node --harmony" 
  },
  "events": {
    "restart": "osascript -e 'display notification \"App restarted due to:\n'$FILENAME'\" with title \"nodemon\"'"
  },
  "watch": [
    "src",
  ],
  "env": {
    "NODE_ENV": "development"
  },
  "ext": "js,json,css,scss,vue"
}

命令行优先级高于配置文件,命令行模式中的参数设置会覆盖掉配置文件的参数配置。

参数说明

  • restartable:重启的命令,默认是 rs ,可以自定义字符串。当用 nodemon 启动应用后,在监听窗口直接输入rs 可直接重启服务,不需要停止服务在重启。除了字符串值外,设置为 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不输出。

$ nodemon --config 'nodemon.json' -x 'npm run build'
[nodemon] 2.0.19
[nodemon] reading config ./nodemon.json
[nodemon] to restart at any time, enter `rs`
[nodemon] or send SIGHUP to 39624 to restart
[nodemon] ignoring: node_modules/**/node_modules ./dist/**/* 
[nodemon] watching path(s): src/**/*
[nodemon] watching extensions: js,json,css,scss,vue
[nodemon] bind restart -> `osascript -e 'display notification "App restarted due to:
'$FILENAME'" with title "nodemon"'`
[nodemon] starting `npm run build`
[nodemon] spawning
[nodemon] child pid: 39626
[nodemon] watching 409 files
  • execMap:运行服务的后缀名和对应的运行命令,"js": "node --harmony" 表示用 nodemon 代替 node --harmony 运行 js 后缀文件;"": "node" 指 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 信息。除此之外,也可以写js来监控,github 上有介绍: events.mdhttps://github.com/remy/nodemon/blob/master/doc/events.md)。

macos神器osascript可以显示桌面通知,语法如下:

osascript -e ' display notification "通知内容" with title "标题" subtitle "子标题" '
image.png
  • watch:监控的文件夹路径或者文件路径。

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

  • ext:监控指定后缀名的文件,用逗号间隔。默认监控的后缀文件:.js, .coffee, .litcoffee, .json。

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

总结

进程管理工具除了nodemon外,还有forever,supervisor,pm2等,他们对比链接,有兴趣可以阅读,开发中nodemon还是比较合适,生产的话用pm2会更好些。

另外,官方也有整理出一些常见问题:https://github.com/remy/nodemon/blob/master/faq.md

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文已整理到 Github,地址 👉 blog[https://github.com/lio-zero/blog]...
    lio_zero阅读 58,302评论 0 15
  • 简介 nodemon用来监视node.js应用程序中的任何更改并自动重启服务,非常适合用在开发环境中。nodemo...
    EndOfJuly阅读 4,288评论 0 0
  • 简介 nodemon用来监视node.js应用程序中的任何更改并自动重启服务,非常适合用在开发环境中。 nodem...
    身怀绝技的大壮阅读 50,629评论 0 14
  • nodemon 开发环境 在开发环境下,往往需要一个工具来自动重启项目工程,node 有一个 npm 模块 sup...
    cmm2012阅读 10,886评论 0 0
  • nodemon是一种工具,可在检测到目录中的文件更改时通过自动重新启动节点应用程序来帮助开发基于node.js的应...
    周而复始_0cd2阅读 2,910评论 0 0