在开发环境下,往往需要一个工具来自动重启项目工程,之前接触过 python 的 supervisor,现在写 node 的时候发现 supervisior 在很多地方都有他的身影,node 也有一个 npm 模块 supervisior 也是用来监控进程的,不过除了 supervisior 外,还有很多其他的工具,从 github 的评分上看,比较热门的有 forever,nodemon,node-dev,具体这些工具的区别可以参考这篇文章 Comparison: Tools to Automate Restarting Node.js Server After Code Changes,个人觉得在开发环境还是用 nodemon,因为配置比较方便,文档也很清晰。所以这里先主要讲 nodemon。

nodemon 的安装:

npm install -g nodemon

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

nodemon [your node app](相当于 node [your node app])

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

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 }
View Code

相关文章: