์ด๋ด,
npm์ ์์ ์คํฌ๋ฆฝํธ์ ํจ๊ป nodemon์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
๋๋ ์๋ํ๋ค:
$ nodemon -x npm start
๊ทธ๋ฆฌ๊ณ
$ nodemon -x "npm start"
๋ํ ์์ฒด์ ์ผ๋ก nodemon
๋ ์์ง๋ง ์ค๋ฅ ์์ด ๋์๋ง ๋ํ ์์๊ฐ ํ์๋ฉ๋๋ค.
๋ฃ์ด์ฃผ์ง ์๊ฒ ์ต๋๊น
"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"
}
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด ์๋ฃจ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Nodemon์ eslint๋ก ๋ชจ๋ ์ค๋ฅ๋ฅผ ์๋์ผ๋ก ํฌ์ฐฉํ ๋ค์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ๋ผ ๋ค์ ์์ํฉ๋๋ค.