nodemon的使用

2022-09-20  本文已影响0人  xurna

目的

开发中监听文件修改,达到重启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"
}

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

参数说明

$ 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

状态后面可以带标准输入输出语句,比如 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

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

总结

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

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

上一篇下一篇

猜你喜欢

热点阅读