# npm๊ณผ yarn
npm๊ณผ yarn์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ์ธ ๋ ธ๋(Node.js)์ ํจํค์ง ๊ด๋ฆฌ์์ ๋๋ค. ์ ์ธ๊ณ์ ๊ฐ๋ฐ์๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ง๋ ๋ค์ํ ํจํค์ง๋ฅผ npm ์จ๋ผ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค (opens new window)์ ์ฌ๋ฆฌ๋ฉด npm, yarn๊ณผ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ํตํด ์ค์น ๋ฐ ์ญ์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ช ๋ น ์ค ์ธํฐํ์ด์ค(Command-line interface, CLI)๋ฅผ ํตํด ํจํค์ง ์ค์น ๋ฐ ์ญ์ ๋ฟ ์๋๋ผ ํจํค์ง ๋ฒ์ ๊ด๋ฆฌ, ์์กด์ฑ ๊ด๋ฆฌ๋ ํธ๋ฆฌํ๊ฒ ํ ์ ์์ต๋๋ค. npm๊ณผ yarn์ ์ ํํ ์ฐจ์ด๋ ๋ฌด์์ผ๊น์? ์ฐ๋ฆฌ๋ ์ด๋ค ํด์ ์ฌ์ฉํด์ ํจํค์ง ๊ด๋ฆฌ๋ฅผ ํด์ผ ํ ๊น์?
# npm
npm์ ๋ ธ๋ ํจํค์ง ๋งค๋์ (Node Package Manager)์ ์ค์๋ง๋ก ๋ ธ๋๋ฅผ ์ค์นํ ๋ ์๋์ผ๋ก ์ค์น๋๋ ๊ธฐ๋ณธ ํจํค์ง ๊ด๋ฆฌ์์ ๋๋ค. ํฌ๊ฒ ๋ ๊ฐ์ง ์ญํ ์ ์ํํฉ๋๋ค.
- ์ฒซ ๋ฒ์งธ ์ญํ ์ ์จ๋ผ์ธ ํ๋ซํผ (opens new window)์ ๋๋ค. ์ฌ๋๋ค์ด ๋ ธ๋ ํจํค์ง๋ฅผ ๋ง๋ค๊ณ , ์ ๋ก๋ํ๊ณ , ๊ณต์ ํ ์ ์๋ ๊ณต๊ฐ์ผ๋ก ๋๊ตฌ๋ ์จ๋ผ์ธ ํ๋ซํผ(npm ๋ ์ง์คํธ๋ฆฌ)์ ๊ฒ์๋ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ ๋ฒ์งธ ์ญํ ์ ๋ช ๋ น ์ค ์ธํฐํ์ด์ค์ ๋๋ค. ์จ๋ผ์ธ ํ๋ซํผ๊ณผ ์ํธ ์์ฉํ๊ธฐ ์ํด ๋ช ๋ น ์ค ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉฐ ํจํค์ง ์ค์น ๋ฐ ์ ๊ฑฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
# ์ค์น
๋ ธ๋๋ฅผ ๋ค์ด๋ก๋ํ๋ฉด npm์ด ์์คํ ์ ์๋์ผ๋ก ์ค์น๋ฉ๋๋ค. ๋ ธ๋ ์ค์น ํ ๋ค์๊ณผ ๊ฐ์ ๋ช ๋ น์ ํตํด npm์ด ์ค์น๋์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
node -v
npm -v
# yarn
yarn์ 2016๋ ํ์ด์ค๋ถ์์ ๊ฐ๋ฐํ ํจํค์ง ๊ด๋ฆฌ์์ ๋๋ค. ๋ฆฌ์กํธ(React)์ ๊ฐ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ฒช์๋ ์ด๋ ค์์ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ๋ฐ๋์๊ณ , npm ๋ ์ง์คํธ๋ฆฌ์ ํธํํ๋ฉด์ ์๋๋ ์์ ์ฑ ์ธก๋ฉด์์ npm๋ณด๋ค ํฅ์๋์์ต๋๋ค. 2016๋ ํ์ด์ค๋ถ์ด ๊ณต๊ฐํ ์ํฐํด (opens new window)์ ์ฝ์ด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
# ์ค์น
yarn์ npm์ ํตํด ์ค์นํฉ๋๋ค.
npm install yarn --global
๋งฅ ์ฌ์ฉ์๋ผ๋ฉด brew๋ฅผ ํตํด ์ค์นํ ์๋ ์์ต๋๋ค.
brew update
brew install yarn
# npm๊ณผ yarn์ ์ฐจ์ด์
# ์๋
npm๊ณผ yarn์ ์ฃผ์ ์ฐจ์ด์ ์ค ํ๋๋ ํจํค์ง ์ค์น ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. npm์ ํจํค์ง๋ฅผ ํ ๋ฒ์ ํ๋์ฉ ์์ฐจ์ ์ผ๋ก ์ค์นํฉ๋๋ค. ๊ทธ์ ๋นํด yarn์ ์ฌ๋ฌ ํจํค์ง๋ฅผ ๋์์ ๊ฐ์ ธ์ค๊ณ ์ค์นํ๋๋ก ์ต์ ํ๋์ด ์์ด ํจํค์ง ์ค์น ์๋ ์ธก๋ฉด์์ yarn์ด npm๋ณด๋ค ๋น ๋ฆ ๋๋ค.
# ๋ณด์
yarn์ ๋ณด์ ์ธก๋ฉด์์ npm๋ณด๋ค ๋ ์์ ํ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค. npm์ ์๋์ผ๋ก ํจํค์ง์ ํฌํจ๋ ๋ค๋ฅธ ํจํค์ง ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. ์ด๋ก ์ธํด ๋ณด์ ์์คํ ์ ๋ช ๊ฐ์ง ์ทจ์ฝ์ฑ์ด ๋ฐ์ํ๋ฉฐ ๋์ค์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด์ yarn์ yarn.lock ๋๋ package.jsonํ์ผ์ ์๋ ํ์ผ๋ง์ ์ค์นํฉ๋๋ค. ๋ณด์์ yarn์ ํต์ฌ ๊ธฐ๋ฅ ์ค ํ๋์ด์ง๋ง ์ต๊ทผ npm์ ์ ๋ฐ์ดํธ์์ npm์ ๋ณด์ ์ ๋ฐ์ดํธ๋ ํฌ๊ฒ ํฅ์๋์์ต๋๋ค.
# ๋ช ๋ น์ด
๋ช ๋ น์ด | npm | yarn |
---|---|---|
dependencies ์ค์น | npm install | yarn |
ํจํค์ง ์ค์น | npm install [ํจํค์ง๋ช ] | yarn add [ํจํค์ง๋ช ] |
dev ํจํค์ง ์ค์น | npm install --save-dev [ํจํค์ง๋ช ] | yarn add --dev [ํจํค์ง๋ช ] |
๊ธ๋ก๋ฒ ํจํค์ง ์ค์น | npm install --global [ํจํค์ง๋ช ] | yarn global add [ํจํค์ง๋ช ] |
ํจํค์ง ์ ๊ฑฐ | npm uninstall [ํจํค์ง๋ช ] | yarn remove [ํจํค์ง๋ช ] |
dev ํจํค์ง ์ ๊ฑฐ | npm uninstall --save-dev [ํจํค์ง๋ช ] | yarn remove [ํจํค์ง๋ช ] |
๊ธ๋ก๋ฒ ํจํค์ง ์ ๊ฑฐ | npm uninstall --global [ํจํค์ง๋ช ] | yarn global remove [ํจํค์ง๋ช ] |
์ ๋ฐ์ดํธ | npm update | yarn upgrade |
ํจํค์ง ์ ๋ฐ์ดํธ | npm update [ํจํค์ง๋ช ] | yarn upgrade [ํจํค์ง๋ช ] |
# ๊ฒฐ๋ก
npm๊ณผ yarn์ ๋ชจ๋ ์ข ์์ฑ์ ๊ด๋ฆฌํ๊ณ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ข์ ํด์ ๋๋ค. ๋ ๋ค ์ง์์ ์ผ๋ก ๊ด๋ฆฌ๋๊ณ ์์ผ๋ฉฐ ํญ๋์ ์ฌ์ฉ์ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ ๋ฐ์ดํธ๋ฅผ ํตํด ์ถ๊ฐ๋ ๊ธฐ๋ฅ ๋๋ถ์ ๊ฑฐ์ ์ฐจ์ด ๋์ง ์๊ฒ ๋์์ต๋๋ค. ๊ฒฐ๋ก ์ ์ผ๋ก ๋ ์ค์ ๋ฌด์์ ์ ํํด์ผ ํ ์ง๋ ๊ฐ์ธ์ ์ทจํฅ, ์ฑ๋ฅ(ํจํค์ง ์ค์น ์๋), ์ปค๋ฎค๋ํฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.