Setup Nodemon to auto restart Nodejs application server
Manually restarting Node.js application is a tiring and tedious job. Nodemon is the best solution available to autorestart a nodejs app server in development mode.
Step 1
🔗Organize the source directory src
and initiate it with an app.js
or index.js
or server.js
or any other convention you use to bootstrap a Node.js server.
Update the package.json
file accordingly by adding a start
script.
1{2 "name": "nodemon-auto-restart",3 "version": "1.0.0",4 "description": "",5 "main": "index.js",6 "scripts": {7 "start": "node src/index.js"8 },9 "keywords": [],10 "author": "Aman Mittal <amandeepmittal@live.com> (http://amandeepmittal.github.io/)",11 "license": "MIT"12}
Step 2
🔗Add express
or any other framework as dependency to bootstrap a minimal server.
Code for a minimal server:
1'use strict';23const express = require('express');4const app = express();56app.use('/', (req, res) => {7 res.status(200).send('Hello World!');8});910app.listen(3000);
In first terminal window start the server:
$ npm run start> node src/index.js
In second terminal window, request the url to test if the api is working and to see the response message:
$ curl -X GET http://localhost:3000/Hello World!
Now if I change the response message, I have to restart the server to get the desired result:
1app.use('/', (req, res) => {2 res.status(200).send('Lorem Ipsum');3});
Use Ctrl + C
to stop the currently running server and restart it by using the same command before: npm run start
.
Using the curl command again from terminal window we get the desired result:
curl -X GET http://localhost:3000/Lorem Ipsum
This whole process is repetitive will slow your development of any package or application. Better solution is to use nodemon
.
Step 3
🔗Add nodemon as devDependency
:
$ npm i -D nodemon
1{2 "name": "nodemon-auto-restart",3 "version": "1.0.0",4 "description": "",5 "main": "index.js",6 "scripts": {7 "start": "node src/index.js"8 },9 "keywords": [],10 "author": "Aman Mittal <amandeepmittal@live.com> (http://amandeepmittal.github.io/)",11 "license": "MIT",12 "dependencies": {13 "express": "4.15.3"14 },15 "devDependencies": {16 "nodemon": "1.11.0"17 }18}
Step 4
🔗Make another script dev
under npm scripts in package.json
file:
1{2 "scripts": {3 "start": "node src/index.js",4 "dev": "nodemon --watch src src/index.js"5 }6}
Now run $ npm run dev
and request using curl command, we will see the last familiar result:
curl -X GET http://localhost:3000/Lorem Ipsum
If I change the response message in index.js
file back to Hello World
, this time I don't I have to restart the server since nodemon
is watching for the changes using inside the src directory, through its --watch
parameter. If I use the curl command again, the result is familiar with the update:
curl -X GET http://localhost:3000/Hello World
One can verify by observing the log messages in the terminal window where nodemon is running:
$ npm run dev> nodemon-auto-restart@1.0.0 dev /Users/amandeepmittal/github/nodemon-auto-restart> nodemon --watch src src/index.js[nodemon] 1.11.0[nodemon] to restart at any time, enter `rs`[nodemon] watching: /Users/amandeepmittal/github/nodemon-auto-restart/src/**/*[nodemon] starting `node src/index.js`[nodemon] restarting due to changes...[nodemon] starting `node src/index.js`
To stop the nodemon process, use Ctrl + C
.
Full Source at this Github Repository.
Originally Published at Hackernoon.com
More Posts
Browse all posts