๐คnvm์ด๋?
nvm(Node Version Manager)= Node.js ๋ฅผ ์ค์นํ๋ ํด์ด์, Node.js์ ๋ค์ํ ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ (Node.js์ ๋ค์ํ ๋ฒ์ ์ ์ฝ๊ฒ ์ค์นํ ์ ์๋ค. )
nvm์ ์ ์ฐ์ง?
OS์ ํน์ ๋ฒ์ ผ์ Node.js ๋ฅผ ์ค์นํ๋ฉด, ์ฌ๋ฌ ๋ฒ์ ์ Node.js ๋ฅผ ์ค์นํด์ผ ํ ๊ฒฝ์ฐ์ ๋์์ ํ ์๊ฐ ์๊ฒ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋จผ์ nvm ์ ์ค์นํ๊ณ , ์ค์นํ nvm ์ ํตํ์ฌ ์ํ๋ ํน์ ๋ฒ์ ผ์ Node.js ๋ฅผ ์ํ๋ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ณต์๋ก ์ค์นํ๋ ๋ฐฉ๋ฒ์ด ๋์ค์ ์ํด์๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ๋๋ค.
โญ๏ธ nvm ์ค์น ํ โ Node.js ์ค์น ํโ npm ์ค์น!
๐คnpm์ด๋?
npm(Node Package Manager) = Node.js ๋ก ๊ฐ๋ฐ๋ ํ๋ก๊ทธ๋จ์(npm ํจํค์ง) ํธ๋ฆฌํ๊ฒ ์ค์น, ์ ๋ฐ์ดํธ ๋ฐ ์ญ์ ๋ฅผ ํด ์ฃผ๋ ํ๋ก๊ทธ๋จ. ์ฆ, ํ์ํ ๋ชจ๋์ ๋ค์ด๋ก๋ํ ์ ์๋, ๋ชจ๋๋ค์ด ๋ชจ์ฌ์๋ ๋ชจ๋ ์คํ ์ด๋ผ๊ณ ์๊ฐํ์! (๐ค์ฐธ๊ณ ์ด์ ๋ํ ์ ๋ณด๋ฅผ ๋ด์๋ ๊ณณ์ด package.json ์ด๋ค.)
npm ์ Node.js ๋ฅผ OS ์ ์ง์ ์ค์นํ์๋ nvm ์ผ๋ก ์ค์นํ์๋ ์ง์ ๊ด๊ณ์์ด, Node.js ๊ฐ ์ค์น๋ ์ํ์์(Node.js ๋ฅผ ์ค์นํ๋ฉด npm ๋ ๊ฐ์ด ์ค์น๋จ.) npm๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ npm ์๋น์ค์ ๋ฑ๋ก๋ Node.js ๋ก ์์ฑ๋ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ ํ๋ก๊ทธ๋จ ์ ๋๋ค.
npm ๋ช ๋ น์ด
- npm init : package.json ์์ฑ
- npm install : package.json ํ์ผ ๋ฐ ํด๋น ์ข ์์ฑ์ ๋์ด๋ ๋ชจ๋ ๋ชจ๋์ ์ค์น
- npm install package_name@๋ฒ์ : ํน์ ํจํค์ง์ ํน์ ๋ฒ์ ์ค์น
- npm install ์ฃผ์ : ํน์ ์ ์ฅ์ ๋ด ํจํค์ง ์ค์น. ์ฃผ๋ก github์ ์ด์ ๊ฐ์ด ์ค์นํฉ๋๋ค.
- npm install package_name -g : ์ต์ . ๊ธ๋ก๋ฒ๋ก ์ค์น. ๋ก์ปฌ์ ๋ค๋ฅธ ํ๋ก์ ํธ๋ ์ด ํจํค์ง๋ฅผ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค.
- npm uninstall : ํจํค์ง ์ญ์ ๋ช ๋ น์ด์ ๋๋ค.
- npm update : ์ค์นํ ํจํค์ง๋ค์ ์ ๋ฐ์ดํธํด์ค๋๋ค.
- npm dedupe : ์ค๋ณต ์ค์น๋ ํจํค์ง๋ค์ ์ ๋ฆฌํด์ฃผ๋ ๋ช ๋ น์ด์ ๋๋ค.
๐ค package.json์ด๋?
package.json์ ํ๋ก์ ํธ ์ ๋ณด์ ์์กด์ฑ(dependencies)์ ๊ด๋ฆฌํ๋ ๋ฌธ์์ ๋๋ค.์ฐ๋ฆฌ๊ฐ ์ด๋ค ํจํค์ง(์คํ์์ค)๋ฅผ ์ฌ์ฉํ๋์ง, ์ด๋ค ๋ฒ์ ์ ์ฌ์ฉํ๋์ง ๋ฑ์ ๊ธฐ๋กํจ์ผ๋ก์จ ์ด๋ ๊ณณ์์๋ ๋์ผํ ๊ฐ๋ฐ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์๊ฒ ํด์ค๋๋ค.
์ ๋ฆฌํ๋ฉด!
(1)nvm์ ์ค์นํ๊ณ ์ค์นํ nvm ์ ์ด์ฉํ์ฌ ์ํ๋ ์กฐ๊ฑด์ผ๋ก,
(2)Node.js๋ฅผ ์ค์นํ ํ์,
(3)npm์ ์ด์ฉํ์ฌ ํ์ํ ํจํค์ง๋ฅผ ์ถ๊ฐ ์ค์นํ๋ค.
๐คnpx๋?
npx๋ ์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง ๊ด๋ฆฌ ๋ชจ๋์ธ **npm(Node Package Module)**์ 5.2.0 ๋ฒ์ ๋ถํฐ ์๋ก ์ถ๊ฐ๋ ๋๊ตฌ์ด๋ค. (์๋ก์ด ํจํค์ง ๊ด๋ฆฌ ๋ชจ๋์ด ์๋!)
⇒ npm๊ณผ ๋น๊ต๋์์ด ์๋๊ณ , npm์ ์ข ๋ ํธํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด์ npm์์ ์ ๊ณตํด์ฃผ๋ ํ๋์ ๋๊ตฌ์ด๋ค.
⇒ npm@5.2.0 ์ด์ ๋ฒ์ ๋ง ๊น๋ ค ์๋ค๋ฉด npx ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- npx ๋ ํจํค์ง๋ฅผ ์์ ์ค์นํด์ "์คํ"ํ๋ ์ฉ๋์ ๋๋ค!
npx๋ ์ค์น๊ฐ ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ npx ๋ก react๋ฅผ ์ค์นํ ๊ฑฐ๋ผ๋ฉด create-react-app ๋ผ๋ ๋ช ๋ น์ด๋ก ์ฌ์ฉํด์
CRA๊ฐ ์์์ react ๋ฅผ ์ค์นํ๊ฒ ๋ง๋ค์ด์ผ ํ๋ค.
- npm์ ํจํค์ง๋ฅผ ๊ด๋ฆฌ๋ง ํ๊ณ ์คํ์ ํ ์ ์๋ค.
npm์ ์ฌ์ฉํ์ฌ ํจํค์ง๋ฅผ ์คํํ๋ ค๋ฉด package.jsonํ์ผ ์์ ํด๋น ํจํค์ง๋ฅผ ์ง์ ํด์ผ ํ๋ค.
๊ฒฐ๋ก ๐ npx๋ npm ํจํค์ง ์คํ๊ธฐ์ด๋ค.
๊ฒฐ๋ก ๐ npm์ ํจํค์ง ๋งค๋์ ์ด๊ณ ๊ด๋ฆฌ๋ง ํ๋ค.
๐คyarn์ด๋?
ํ์ด์ค๋ถ์์ ๋ง๋ ์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง ๋งค๋์ ์ด๋ค. npm๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ๋ค.
npm์ ๋จ์ ์ธ ์๋(performance), ์์ ์ฑ(stability), ๋ณด์์ฑ(security) ์ธก๋ฉด์ ๊ฐ์ ํ์๋ค.
- ์๋(perfomance)
yarn์ ๋ค์ด๋ฐ์ ํจํค์ง ๋ฐ์ดํฐ๋ฅผ ์บ์(cache)์ ์ ์ฅํ์ฌ, ์ค๋ณต๋ ๋ฐ์ดํฐ๋ ๋ค์ด๋ก๋ํ์ง์๊ณ , ์บ์์ ์ ์ฅ๋ ํ์ผ์ ํ์ฉํ์ฌ npm์ ๋นํด ํจํค์ง ์ค์น์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ๊ฐ์ ํจํค์ง๋ฅผ ์ค์นํ ๋ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ performance์ speed๊ฐ ์ฆ๊ฐ! (npm์ ์์ฐจ์ )
- ์์ ์ฑ(stability)๊ณผ ๋ณด์์ฑ(security)
npm์ ํจํค์ง๊ฐ ์ค์น๋ ๋ ์๋์ผ๋ก ์ฝ๋์ ์์กด์ฑ์ ์คํํ ์ ์๋๋ก ํ์ฉํ์ฌ ํธ๋ฆฌํ๊ธฐ๋ ํ์ง๋ง ์์ ์ฑ์ ์ํํ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค. ํนํ ๋ณด์ฅ๋ ์ ์ฑ ์์ด ๋ฑ๋กํ ํจํค์ง๊ฐ ์กด์ฌํ ์ ์๋ค๋ ์ ์์ ๋์ฑ ์ํ๋๊ฐ ๋๋ค๊ณ ํ๋ค.
๋ฐ๋ฉด yarn์ yarn.lock์ด๋ package.json์ผ๋ก๋ถํฐ ์ค์น๋ง ํ๋ฉฐ, yarn.lock์ ๋ชจ๋ ๋๋ฐ์ด์ค์ ๊ฐ์ ํจํค์ง๋ฅผ ์ค์นํ๋ ๊ฒ์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ ๋ฒ์ ์ ์ฐจ์ด๋ก ์ธํด ์๊ธฐ๋ ๋ฒ๊ทธ๋ฅผ ๋ฐฉ์งํด์ค ์ ์๋ค.
npm vs. yarn ๋ ์ค์ ๋ฌด์์ ์ฌ์ฉํด์ผํ ๊น?
์๋ฌด๋ฆฌ yarn์ด ์ข๋ค๊ณ ํ๋ค, ์์กฐ๋ ์ด๊ธธ ์ ์๋ค๊ณ ํ๋ค!!
yarn์ด npm์ ๋จ์ ์ ๋ณด์ํ์ฌ ๋์จ ๊ฒ์ด๊ธฐ๋ ํ์ง๋ง. npm ๋ํ ๋ช๋ ๊ฐ ๋ฐ์ ์ ๊ฑฐ๋ญํ๋ฉฐ ๋จ์ ์ ๋ง์ด ๋ณด์ํ๊ธฐ ๋๋ฌธ์ ํ์ฌ npm/yarn์ performance์ stability ์ฐจ์ด๋ ๊ทธ๋ฆฌ ํฌ์ง ์๋ค๊ณ ๋ด๋ ๋ฌด๋ฐฉํ๋ค๊ณ ํ๋ค.
⇒ '๊ฐ์์๊ฒ ํธํ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ง๋ง ๋ง์ฝ ๋๋ค ์ฌ์ฉํด๋ณด์ง ์์ ์ํฉ์ด๋ผ๋ฉด npm์ ์ฌ์ฉํด๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค.'
๐ํน์๋ ์๋ชป๋ ๊ฐ๋ ์ ๋ฌ์ด ์๋ค๋ฉด ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค. ์ ์ ์ฑ์ฅ์ ํฐ ๋์์ด ๋ฉ๋๋ค๐ค
์ฐธ๊ณ
https://velog.io/@kysung95/๊ฐ๋ฐ์์-npm๊ณผ-yarn