https://www.daleseo.com/js-package-manager/
์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง ๋งค๋์ : npm vs. Yarn
Engineering Blog by Dale Seo
www.daleseo.com
https://joshua1988.github.io/vue-camp/package-manager/npm-vs-yarn.html#yarn
NPM vs Yarn | Cracking Vue.js
npm๊ณผ yarn npm๊ณผ yarn์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ์ธ ๋ ธ๋(Node.js)์ ํจํค์ง ๊ด๋ฆฌ์์ ๋๋ค. ์ ์ธ๊ณ์ ๊ฐ๋ฐ์๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ง๋ ๋ค์ํ ํจํค์ง๋ฅผ npm ์จ๋ผ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค (opens new window)์ ์ฌ
joshua1988.github.io
ํจํค์ง ๋งค๋์ (package manager)๋ ํ๋ก์ ํธ๊ฐ ์์กดํ๊ณ ์๋ ํจํค์ง๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ค์น, ๊ฐฑ์ , ์ญ์ ํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ด๋ฆฌ ๋๊ตฌ์ ๋๋ค.
npm
npm(Node Package Manager์ ์ฝ์์ธ๋ฐ ํน์ดํ๊ฒ ๋ชจ๋ ์๋ฌธ์๋ก ์๋๋ค)์ Node.js์ ํ์ค ํจํค์ง ๋งค๋์ ๋ก์ Node.js ๋ฐํ์์ ์ค์นํ๋ฉด ๋ฌด์กฐ๊ฑด ๋ธ๋ ค์ค๋ ๊ธฐ๋ณธ ํจํค์ง ๋งค๋์ ์ ๋๋ค.
yarn
Yarn(Yet Another Resource Negotiator)์ Facebook์์ 2016๋ ์ ๋ง๋ ์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง ๋งค๋์ ์ ๋๋ค. npm ๋ณด๋ค ํจ์ฌ ๋น ๋ฅด๊ณ Workspaces์ ๊ฐ์ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ๊น์ง ์ ๊ณตํด์ ์ถ์ํ์ง๋ง์ ์๋ฐ์คํฌ๋ฆฝํธ ์ปค๋ฎค๋ํฐ์์ ํฐ ์ฃผ๋ชฉ์ ๋ฐ์์ต๋๋ค. ๋น์ npm ๋๋น Yarn์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ yarn.lock ํ์ผ์ ํตํด ํจํค์ง ๋ฒ์ ์ ๊ธ์ ์ง์ํ๋ ๊ฒ์ด์๋๋ฐ์. ์ด๋ฅผ ํตํด ํ๋ก์ ํธ์์ ์์กดํ๋ ๋ชจ๋ ํจํค์ง๋ฅผ ์ด๋ ํ๊ฒฝ์์๋ ํญ์ ๋์ผํ ๋ฒ์ ์ผ๋ก ์ค์นํ ์ ์๊ฒ ๋ง๋ค์ด์คฌ์ต๋๋ค.
์ฐจ์ด์
์ฌ์ฉ์ ์ ์ฅ์์ ๋ ํจํค์ง์ ๊ฐ์ฅ ๋๋๋ฌ์ง๋ ์ฐจ์ด์ ์ ํจํค์ง ๋ฒ์ ์ ๊ธ์ ์ํด npm์ package-lock.json ํ์ผ์, Yarn์ yarn.lock ํ์ผ์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ํ Yarn์ CLI(Command Line Interface)๋ ๋๋ถ๋ถ์ npm์ ๋ช ๋ น์ด(command)๋ฅผ ๋ชจ๋ฐฉํ๊ณ ์์ง๋ง ์กฐ๊ธ์ฉ ๋ค๋ฅธ ๋ถ๋ถ๋ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค. ๋ํ์ ์ผ๋ก npm์ ์๋ก์ด ํจํค์ง๋ฅผ ์ค์นํ ๋, npm install ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐ๋ฉด์ Yarn์ yarn add ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Yarn์ ๊ฐ์ฅ ํฐ ๋จ์ ์ ๋ฝ๋๋ค๋ฉด Node.js์ ํจ๊ป ์ค์น๋๋ npm๊ณผ ๋ฌ๋ฆฌ ๊ฐ๋ฐ์์ ์ปดํจํฐ๋ CI(Continuous integration) ์๋ฒ์ ๋ณ๋๋ก Yarn์ ๋ฐ๋ก ์ค์น๋ฅผ ํด์ผํ๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ Yarn์ ํฐ๋ฏธ๋์์ ๋ช ๋ น์ด์ ์คํ ๊ฒฐ๊ณผ๊ฐ npm๋ณด๋ค ์ข ๋ ์์๊ฒ ๋์ค๋ ๋ฑ ๊ฐ๋ฐ์ ๊ฒฝํ ์ธก๋ฉด์์ ์์ง๋ npm ๋๋น ๋งค๋ ฅ์ ์ธ ๋ถ๋ถ์ด ์กด์ฌํ๋ ๊ฒ๋ ์ฌ์ค์ ๋๋ค.
์๋
npm๊ณผ yarn์ ์ฃผ์ ์ฐจ์ด์ ์ค ํ๋๋ ํจํค์ง ์ค์น ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. npm์ ํจํค์ง๋ฅผ ํ ๋ฒ์ ํ๋์ฉ ์์ฐจ์ ์ผ๋ก ์ค์นํฉ๋๋ค. ๊ทธ์ ๋นํด yarn์ ์ฌ๋ฌ ํจํค์ง๋ฅผ ๋์์ ๊ฐ์ ธ์ค๊ณ ์ค์นํ๋๋ก ์ต์ ํ๋์ด ์์ด ํจํค์ง ์ค์น ์๋ ์ธก๋ฉด์์ yarn์ด npm๋ณด๋ค ๋น ๋ฆ ๋๋ค.
๋ณด์
yarn์ ๋ณด์ ์ธก๋ฉด์์ npm๋ณด๋ค ๋ ์์ ํ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์์ต๋๋ค. npm์ ์๋์ผ๋ก ํจํค์ง์ ํฌํจ๋ ๋ค๋ฅธ ํจํค์ง ์ฝ๋๋ฅผ ์คํํฉ๋๋ค. ์ด๋ก ์ธํด ๋ณด์ ์์คํ ์ ๋ช ๊ฐ์ง ์ทจ์ฝ์ฑ์ด ๋ฐ์ํ๋ฉฐ ๋์ค์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ฉด์ yarn์ yarn.lock ๋๋ package.jsonํ์ผ์ ์๋ ํ์ผ๋ง์ ์ค์นํฉ๋๋ค. ๋ณด์์ yarn์ ํต์ฌ ๊ธฐ๋ฅ ์ค ํ๋์ด์ง๋ง ์ต๊ทผ npm์ ์ ๋ฐ์ดํธ์์ npm์ ๋ณด์ ์ ๋ฐ์ดํธ๋ ํฌ๊ฒ ํฅ์๋์์ต๋๋ค.