Nodemon: npm ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ ์ง€์›

์— ๋งŒ๋“  2013๋…„ 01์›” 28์ผ  ยท  14์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: remy/nodemon

์ด๋ด,

npm์˜ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ์™€ ํ•จ๊ป˜ nodemon์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์‹œ๋„ํ–ˆ๋‹ค:

$ nodemon -x npm start

๊ทธ๋ฆฌ๊ณ 

$ nodemon -x "npm start"

๋˜ํ•œ ์ž์ฒด์ ์œผ๋กœ nodemon ๋„ ์žˆ์ง€๋งŒ ์˜ค๋ฅ˜ ์—†์ด ๋„์›€๋ง ๋Œ€ํ™” ์ƒ์ž๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚ด ์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"scripts": {
    "prestart": "eslint .",
    "start": "node app",
    "dev": "nodemon --exec npm start"
  },

Nodemon์€ eslint๋กœ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ์ž๋™์œผ๋กœ ํฌ์ฐฉํ•œ ๋‹ค์Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  14 ๋Œ“๊ธ€

๋„ฃ์–ด์ฃผ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ

"scripts": {
  "start": "nodemon app"
}

package.json์—์„œ npm start ๋กœ ํ˜ธ์ถœํ•˜์‹ญ์‹œ์˜ค.
๋ฌผ๋ก  ํ˜„์žฌ start ๋Œ€์ƒ์— ์žˆ๋Š” ๋‚ด์šฉ์„ nodemon์— ์ „๋‹ฌํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ทธ๊ฑด ๋‹ค๋ฅธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ๋ฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ ๋™์ผํ•œ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ด๋ ฌํ•œ ํŒฌ์€ ์•„๋‹™๋‹ˆ๋‹ค.

nodemon์€ ์‹คํ–‰ํ•˜๋ ค๋Š” "app.js"๊ฐ€ ํŒŒ์ผ๋กœ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ nodemon -x npm start ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด "start"๋ผ๋Š” ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ nodemon์ด ์ œ๋•Œ์— ์„œ๋ฒ„ ์†Œ์ผ“์„ ํ•ด์ œํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์—†์„ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
์‹œ๋„ํ–ˆ์ง€๋งŒ "๊ฐ๋…์ž"ํŒจํ‚ค์ง€์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์‹œ์ž‘ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ณต์žกํ•œ ๊ฒฝ์šฐ ์ž์ฒด .js ์Šคํฌ๋ฆฝํŠธ์— ํ†ตํ•ฉํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜, ์•„๋งˆ ์—ฌ๊ธฐ๋กœ ๊ฐ€๋Š” ๊ธธ์ด๊ฒ ์ง€. ๋‚˜๋Š” ์›๋ž˜ ์ผ€์ดํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์ง€๋งŒ ์•„๋งˆ ๋‹ค์‹œ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”.

๋˜ํ•œ nodemon์„ ์‚ฌ์šฉํ•˜์—ฌ $ npm start ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ lintํ•˜๋Š” ์‚ฌ์ „ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋„ ์‹คํ–‰ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

// package.json snippet
"scripts": {
    "prestart": "eslint index.js",
    "start": "node index.js"
}

$ npm start ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋จผ์ € $ npm prestart ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
์–ด๋–ป๊ฒŒ๋“  nodemon์œผ๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์ „ ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ๋„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์•„์ด๋””์–ด?

npm์— ๋Œ€ํ•œ ์‚ฌ์ „ ๋ฐ ์‚ฌํ›„ ํ›„ํฌ๋Š” ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•ด๊ฒฐ์ฑ…์€ start ๊ฐ’์„ nodemon index.js ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ”„๋กœ๋•์…˜์—์„œ npm start๋ฅผ ์‚ฌ์šฉํ•œ b/c๋Š” ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์ „๊ตฌ์— ๋ถˆ์„ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"prestart": "eslint .",
    "start": "node index.js",
    "predev": "eslint .",
    "dev": "nodemon index.js"
}

$ npm start ๋Š” prod์—์„œ ์ž‘๋™ํ•˜๊ณ  $ npm run dev ๋Š” ๊ฐœ๋ฐœ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ฐ•!

๋‹น์‹ ์˜ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์  ์žฅ ๋‚ด๊ฐ€ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ๋งํ–ˆ๋‹ค. ์ดˆ๊ธฐ ์‹คํ–‰ ์‹œ predev ์Šคํฌ๋ฆฝํŠธ๋งŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ํ›„์† ํŒŒ์ผ ๋ณ€๊ฒฝ์€ predev npm ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•„๋‹Œ nodemon๋งŒ ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์†”๋ฃจ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

"scripts": {
    "prestart": "eslint .",
    "start": "node app",
    "dev": "nodemon --exec npm start"
  },

Nodemon์€ eslint๋กœ ๋ชจ๋“  ์˜ค๋ฅ˜๋ฅผ ์ž๋™์œผ๋กœ ํฌ์ฐฉํ•œ ๋‹ค์Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

@nathanhleung ๊ทธ๊ฒƒ์€ eslint๊ฐ€ "npm dev" ๋Œ€์‹  "npm start"๋ฅผ ํ†ตํ•ด ํ”„๋กœ๋•์…˜์—์„œ๋„ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

@VictorioBerra ์˜ˆ, ์‹œ์ž‘ ์ „ ํ›„ํฌ๊ฐ€ eslint๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ eslint๋Š” npm start ๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ(์•ž์„œ ์–ธ๊ธ‰ํ•œ ๊ตฌ์„ฑ์œผ๋กœ) ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"scripts": {
    "predev": "eslint .",
    "dev": "npm start",
    "start": "node app",
    "nodemon": "nodemon --exec npm dev"
  },

npm run nodemon ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฆฐํŠธํ•˜๊ณ  npm start ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฆฐํŠธ ์—†์ด ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

@nathanhleung npm run dev $๋ฅผ ์œ„ํ•ด run ๋ฅผ npm dev ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

npm ์Šคํฌ๋ฆฝํŠธ ๋Œ€์‹  nodemon.json ์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ํ›„ํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‹ค์Œ npm start๋Š” ์ €์—๊ฒŒ ์ž˜ ๋งž์Šต๋‹ˆ๋‹ค.

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "nodemon ./server.js localhost 8080"
  }
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰