Tijekom razvoja NodeJS aplikacija potrebno je prilikom svake promjene restartati aplikaciju kako bi se promjene vidjele. To nije problem napraviti nekoliko puta, ali s vremenom čovjek se zapita postoji li mogućnost da se to automatizira.
Rješenje se nalazi u obliku nodemon skripte koja će pratiti sve promjene unutar projekta u kojemu je pokrenuta i automatski restartati aplikaciju kako bi se učinjene promjene odmah vidjele u npr. web pregledniku.
Novu ću aplikaciju kreirati naredbom
1 |
$ npm init --yes |
i odmah instalirati ExpressJS.
1 |
$ npm install express --save |
Sada u mapi projekta mogu vidjeti package.json datoteku sa sljedećim sadržajem
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "name": "NodemonPrimjer", "version": "1.0.0", "description": "Primjer NodeJS/Nodemoon APIja", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "Tomislav Stanković", "license": "ISC", "dependencies": { "express": "^4.16.2" } } |
Sada ću kreirati index.js datoteku u kojoj određujem da će se API pokrenuti na portu 1337
1 2 3 4 5 6 7 8 9 10 11 12 |
var express = require('express'); var app = express(); var port = process.env.PORT || 1337 app.get('/', function(req, res) { res.send('<h1>Ovo je primjer Node.js/Nodemon API-ja!</h1>'); }); // pokretanje API-ja app.listen(port); console.log('API je pokrenut i koristi port:' + ' ' + port); |
API pokrećem naredbom $ node index.js
U web pregledniku sada mogu vidjeti sljedeće
Trenutno u projekt nije instaliran nodemon i zato prilikom svake promjene moram ručno stopirati (CTRL+C) i ponovno pokrenuti (node index.js) API.
nodemon instalacija
nodemon se može instalirati na dva načina. Lokalno unutar projekta i globalno na računalu.
Sljedećom naredbom instaliram nodemon lokalno unutar projekta
1 |
npm install nodemon --save |
U slučaju da želim nodemon instalirati globalno na računalo koristim sljedeću naredbu
1 |
npm install -g nodemon |
Datoteka package.json sada ima jedan novi redak.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "name": "NodemonPrimjer", "version": "1.0.0", "description": "Primjer NodeJS/Nodemoon APIja", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "Tomislav Stanković", "license": "ISC", "dependencies": { "express": "^4.16.2", "nodemon": "^1.15.0" } } |
Projekt sada pokrećem naredbom
1 |
$ nodemon index.js |
I sada će bilo koja promjena unutar projekta rezultirati automatskim restartom
Zaključak
nodemon je posebno koristan prilikom razvoja NodeJS aplikacija, dok će se u produkciji koristiti npr. PM2, jer tada se događa najviše promjena i može biti jako naporno nakon svake promjene ručno raditi restart projekta. Više o skripti moguće je pronaći na poveznici https://github.com/remy/nodemon