๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Javascript&Typescript/Node.js

[Node.js] nodemon ์‹คํ–‰ ๋ฐฉ์‹ ์ฐจ์ด: nodemon app.js vs npx nodemon app.js

by clolee 2025. 3. 20.

๐Ÿ“Œ nodemon ์‹คํ–‰ ๋ฐฉ์‹ ์ฐจ์ด: nodemon app.js vs npx nodemon app.js (์„ค์น˜๋ถ€ํ„ฐ ์‹คํ–‰๊นŒ์ง€!) ๐Ÿš€


1. nodemon์ด๋ž€? ๐Ÿ”ฅ

โœ… nodemon์€ Node.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž๋™์œผ๋กœ ๊ฐ์‹œํ•˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๊ฐ์ง€๋˜๋ฉด ์ž๋™์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ ๋„๊ตฌ์ž„.

โœ” Node.js๋กœ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ๋งค๋ฒˆ Ctrl + C๋กœ ์„œ๋ฒ„๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์Œ.
โœ” nodemon์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์„œ๋ฒ„๋ฅผ ์žฌ์‹œ์ž‘ํ•ด ์คŒ.
โœ” ์ฃผ๋กœ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ์‹œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋จ.

 

๐Ÿ”น ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

nodemon app.js
  • app.js ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๊ณ , ํŒŒ์ผ ๋ณ€๊ฒฝ์ด ๊ฐ์ง€๋˜๋ฉด ์ž๋™์œผ๋กœ ๋‹ค์‹œ ์‹คํ–‰๋จ.

๐Ÿ”น ํŠน์ • ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ๊ฐ์‹œํ•˜๋ ค๋ฉด?

nodemon --ext js,json
  • .js, .json ํŒŒ์ผ์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งŒ ์žฌ์‹œ์ž‘ํ•˜๋„๋ก ์„ค์ •.

๐Ÿ”น ์‹คํ–‰ ์‹œ ํŠน์ • ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ๊ฐ€๋Šฅ

nodemon --exec python myscript.py
  • nodemon์„ ์‚ฌ์šฉํ•˜์—ฌ Node.js๊ฐ€ ์•„๋‹Œ Python ์Šคํฌ๋ฆฝํŠธ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅ.

2. nodemon ์„ค์น˜ ๋ฐฉ๋ฒ• ๐Ÿ› ๏ธ

โœ… ์ „์—ญ(๊ธ€๋กœ๋ฒŒ) ์„ค์น˜:

npm install -g nodemon
  • ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋ฒ„์ „์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ.
  • nodemon app.js ๋ช…๋ น์–ด๋ฅผ ์–ด๋””์„œ๋“  ์‹คํ–‰ ๊ฐ€๋Šฅ.

โœ… ๋กœ์ปฌ(ํ”„๋กœ์ ํŠธ ๋‚ด) ์„ค์น˜:

npm install --save-dev nodemon
  • ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด node_modules/.bin/์— ์„ค์น˜๋จ.
  • package.json์˜ devDependencies์— ํฌํ•จ๋จ.
  • ํ•ด๋‹น ํ”„๋กœ์ ํŠธ ํด๋” ๋‚ด์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•จ.

3. npx๋ž€? ๐Ÿ’ก

โœ… npx๋Š” npm์— ํฌํ•จ๋œ ํŒจํ‚ค์ง€ ์‹คํ–‰ ๋„๊ตฌ๋กœ, ํ”„๋กœ์ ํŠธ์— ์„ค์น˜๋œ ํŒจํ‚ค์ง€๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ๋จ.

โœ” npx ํŒจํ‚ค์ง€๋ช…์„ ์ž…๋ ฅํ•˜๋ฉด ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ node_modules/.bin/์—์„œ ๋จผ์ € ์‹คํ–‰
โœ” ๋งŒ์•ฝ ํ•ด๋‹น ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด, ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‹คํ–‰ (์ผ์‹œ์  ๋‹ค์šด๋กœ๋“œ ๊ฐ€๋Šฅ)

๐Ÿ”น ์˜ˆ๋ฅผ ๋“ค์–ด, npx nodemon app.js๋ฅผ ์‹คํ–‰ํ•˜๋ฉด:

  1. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ๋‚ด์˜ node_modules/.bin/nodemon์„ ์ฐพ์•„ ์‹คํ–‰
  2. ๋งŒ์•ฝ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด, npm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ nodemon์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‹คํ–‰
  3. ๋‹ค์šด๋กœ๋“œ๋œ ํŒจํ‚ค์ง€๋Š” ์บ์‹œ๋˜์–ด, ๋‹ค์Œ ์‹คํ–‰ ์‹œ ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋จ

๐Ÿ‘‰ ์ฆ‰, npx nodemon app.js๋Š” ํ•ญ์ƒ ํ”„๋กœ์ ํŠธ์— ๋งž๋Š” nodemon์„ ์‹คํ–‰ํ•˜๋ฉฐ, ์—†์œผ๋ฉด ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•จ.


4. nodemon app.js vs npx nodemon app.js ์ฐจ์ด์  ๐Ÿ”

 

์‹คํ–‰ ๋ฐฉ์‹  ๋™์ž‘ ์›๋ฆฌ  ์‹คํ–‰ ๊ฐ€๋Šฅ ์กฐ๊ฑด
nodemon app.js ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋“ฑ๋ก๋œ nodemon ์‹คํ–‰ 1) ๊ธ€๋กœ๋ฒŒ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ 2) node_modules/.bin/์ด PATH์— ํฌํ•จ๋œ ๊ฒฝ์šฐ
npx nodemon app.js ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ node_modules/.bin/nodemon ์‹คํ–‰ nodemon์ด ๋กœ์ปฌ์— ์„ค์น˜๋˜์–ด ์žˆ๊ฑฐ๋‚˜, ์—†์œผ๋ฉด ์ž๋™ ๋‹ค์šด๋กœ๋“œ

5. nodemon app.js๋„ ์‹คํ–‰๋˜๋Š” ์ด์œ ๋Š”? ๐Ÿค”

์ด ์งˆ๋ฌธ์ด ๋‚˜์˜ค๋Š” ์ด์œ ๋Š” ํ”„๋กœ์ ํŠธ์— nodemon์„ ๋กœ์ปฌ๋กœ ์„ค์น˜ํ–ˆ์„ ๋•Œ, npx nodemon app.js๊ฐ€ ์•„๋‹ˆ๋ผ nodemon app.js๋„ ์‹คํ–‰๋œ๋‹ค๋Š” ์  ๋•Œ๋ฌธ!
"๊ทธ๋Ÿผ ๊ตณ์ด npx๋ฅผ ์จ์•ผ ํ•˜๋‚˜?" ๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž„.

๐Ÿ“Œ (1) node_modules/.bin/์ด PATH์— ํฌํ•จ๋œ ๊ฒฝ์šฐ

  • npm์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ node_modules/.bin/์— ์ €์žฅํ•จ.
  • ํ„ฐ๋ฏธ๋„์—์„œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•  ๋•Œ, node_modules/.bin/ ๊ฒฝ๋กœ๋ฅผ ์ž๋™์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ.
  • ์ด ๊ฒฝ์šฐ, nodemon์„ ๊ธ€๋กœ๋ฒŒ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š์•˜๋”๋ผ๋„ nodemon app.js๊ฐ€ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Œ.

๐Ÿ”น ํ™•์ธ ๋ฐฉ๋ฒ• (node_modules/.bin์ด PATH์— ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ์ฒดํฌ)

echo $PATH   # Mac/Linux
echo %PATH%  # Windows

๐Ÿ“Œ (2) ๊ธ€๋กœ๋ฒŒ๋กœ ์„ค์น˜๋œ nodemon์ด ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ

  • ๋งŒ์•ฝ nodemon์„ npm install -g nodemon์œผ๋กœ ๊ธ€๋กœ๋ฒŒ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด,
    nodemon app.js ์ž…๋ ฅ ์‹œ ์ „์—ญ nodemon์ด ์‹คํ–‰๋  ์ˆ˜๋„ ์žˆ์Œ.
  • ์ด ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋‹ค๋ฅธ nodemon ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด,
    ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ.

โœ… ์ฆ‰, nodemon app.js๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํ”„๋กœ์ ํŠธ์— ์„ค์น˜๋œ nodemon์ด ์‹คํ–‰๋  ์ˆ˜๋„ ์žˆ๊ณ ,
๊ธ€๋กœ๋ฒŒ ์„ค์น˜๋œ nodemon์ด ์‹คํ–‰๋  ์ˆ˜๋„ ์žˆ์–ด์„œ, ํ•ญ์ƒ ๋ช…ํ™•ํ•œ ์‹คํ–‰์„ ์œ„ํ•ด npx๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•จ.


6. ์–ด๋–ค ๊ฑธ ์จ์•ผ ํ• ๊นŒ? (์ถ”์ฒœ) ๐ŸŽฏ

โœ… npx nodemon app.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์•ˆ์ „ํ•จ!
โœ” ๊ธ€๋กœ๋ฒŒ ์„ค์น˜ ์—ฌ๋ถ€์™€ ๊ด€๊ณ„์—†์ด ๋™์ž‘
โœ” ํ”„๋กœ์ ํŠธ์— ๋งž๋Š” nodemon ๋ฒ„์ „์„ ์‹คํ–‰
โœ” nodemon์ด ์—†์œผ๋ฉด ์ž๋™ ๋‹ค์šด๋กœ๋“œ ํ›„ ์‹คํ–‰

โœ… ๊ทธ๋ƒฅ nodemon app.js๋„ ๊ดœ์ฐฎ์ง€๋งŒ...
โœ” ํ”„๋กœ์ ํŠธ ํด๋”์—์„œ ์‹คํ–‰ํ•˜๋ฉด ๋ฌธ์ œ ์—†์Œ.
โœ” ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ์‹คํ–‰ํ•  ๋•Œ, ๊ธ€๋กœ๋ฒŒ ๋ฒ„์ „์ด ์‹คํ–‰๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ.


๐Ÿš€ ๊ฒฐ๋ก 

โœ… ๋กœ์ปฌ ์„ค์น˜(-D) ํ›„ npx nodemon app.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์•ˆ์ •์ !
๐Ÿ‘‰ ๊ธ€๋กœ๋ฒŒ ์„ค์น˜ ์—†์ด๋„ ๊ฐ€๋Šฅํ•˜๊ณ , ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ์ผ๊ด€๋œ ๋ฒ„์ „ ์œ ์ง€ ๊ฐ€๋Šฅ! ๐Ÿ’ก

๋Œ“๊ธ€