在开发环境下,往往需要一个工具来自动重启项目工程,之前接触过 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 }