文章目录
nodemon工具使用(node app、nodemon app)
前言
上篇文章我们讲了nodejs的package.json 文件,它里面的内容是什么?它有什么作用?详细可参考博文:Node.js后端开发 - 基础篇 #17 package.json 文件,这篇文章我们讲讲nodejs的nodemon工具,它有什么作用呢?
nodemon工具简单介绍
我们以前写nodejs项目代码的时候,每改写一个功能就把服务器重新启动一次,就是运行node app这个命令,这样会很麻烦的!我们不应该这么做,我们应该让这个服务器自动重启,就是每当我们代码改变的时候,它会自动的重启,nodemon就提供了这样的功能,它会监控你所有的文件, 你的文件每当被改变,也就是说你的代码变化的时候,这个服务器就会自动重新重启,也就是说你不用手动把它关掉然后再重新启动,我们可以参考的官网:nodemon - npm,这个工具的使用是非常简单的,直接把它先安装下来,然后用nodemon代替node命令就可以了!nodemon的功能是很强大的,它还可以设置一些其他的参数,还有一些不同的功能,我们这里只是简单介绍,至于其它功能可以去参考官方文档。
nodemon工具安装
我们执行 npm install -g nodemon 进行安装,这个-g 即 -global 意思就是全面的、全局的,
$ npm install -g nodemon
/Users/luminal/.nvm/versions/node/v10.16.0/bin/nodemon -> /Users/luminal/.nvm/versions/node/v10.16.0/lib/node_modules/nodemon/bin/nodemon.js
> fsevents@1.2.9 install /Users/luminal/.nvm/versions/node/v10.16.0/lib/node_modules/nodemon/node_modules/fsevents
> node install
node-pre-gyp WARN Using needle for node-pre-gyp https download
[fsevents] Success: "/Users/luminal/.nvm/versions/node/v10.16.0/lib/node_modules/nodemon/node_modules/fsevents/lib/binding/Release/node-v64-darwin-x64/fse.node" is installed via remote
> nodemon@1.19.2 postinstall /Users/luminal/.nvm/versions/node/v10.16.0/lib/node_modules/nodemon
> node bin/postinstall || exit 0
Love nodemon? You can now support the project via the open collective:
> https://opencollective.com/nodemon/donate
+ nodemon@1.19.2
added 289 packages from 144 contributors in 36.173s
nodemon工具使用(node app、nodemon app)
我们上几篇文章,启动代码都是这样运行的:
$ node app
Server started on localhost port 3000
现在我们安装了nodemon工具,我们可以这样运行:
$ nodemon app
bash: nodemon: command not found
$ nvm list
v10.16.0
v12.6.0
-> system
node -> stable (-> v12.6.0) (default)
stable -> 12.6 (-> v12.6.0) (default)
iojs -> N/A (default)
lts/* -> lts/dubnium (-> v10.16.0)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.16.0 (-> N/A)
lts/dubnium -> v10.16.0
$ nvm use v10.16.0
Now using node v10.16.0 (npm v6.9.0)
$ nodemon app
[nodemon] 1.19.2
[nodemon] to restart at any time, enter `rs`
[nodemon] watching dir(s): *.*
[nodemon] starting `node app.js`
Server started on localhost port 3000
nvm命令我简单说下,因为我电脑中安装了不同版本的node,它通过nvm来管理。所以要执行 nvm list、nvm use v10.16.0命令来切换到正在使用的node版本上,否则会报错:bash: nodemon: command not found
我们执行 nodemon app命令以后,它就会监控项目的所有目录或文件,然后自动重新启动。另外在运行 nodemon命令
的终端上,你试着输入 rs,然后回车,会手动重启哦,当你不是改 js 文件的时候,比如只改 html 文件,这个方法不错。
当我们改变项目里面的代码,如我改变app.js的代码,注释了: handle["/"] = handler.home;
var server = require('./server');
var router = require('./router');
var handler = require('./handler');
var handle = {};
//handle["/"] = handler.home;
handle['/home'] = handler.home;
handle['/review'] = handler.review;
handle['/api/v1/records'] = handler.api_records;
server.startServer(router.route, handle);
nodejs服务器终端自动输出了如下的信息
[nodemon] 1.19.2
[nodemon] to restart at any time, enter `rs`
[nodemon] watching dir(s): *.*
[nodemon] starting `node app.js`
Server started on localhost port 3000
//改变项目代码以后,终端自动输出了如下的信息
[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
Server started on localhost port 3000
这个你可以在浏览器输入地址再进行测试看效果,页面访问不到了!说明nodejs服务端自动重启更新了!
nodemon这个工具还是不错的,我们在开发环境中可以使用,当然在生产环境我们就不要用这个工具了,因为我们每次改代码它都会重新启动,生产环境没必要老改代码重新启动!
nodemon工具使用(npm run start)
我们也可以把上篇文章讲到的package.json文件的,scripts 字段的启动命令改成 "start": "nodemon app.js"
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "nodemon app.js"
},
这时候 npm run start 启动项目,就会变成如下这样
$ npm run start
> hello-nodejs@1.0.0 start /Users/luminal/Desktop/nodejs/hello-nodejs
> nodemon app.js
[nodemon] 1.19.2
[nodemon] to restart at any time, enter `rs`
[nodemon] watching dir(s): *.*
[nodemon] starting `node app.js`
Server started on localhost port 3000