Yarn vs npm
์ ํํ๊ฒ ์ค๋ช ํ์ง ๋ชปํ๋ ๋ด์ฉ์ ์ ๋ฆฌํด๋ด์! Reference: npm-vs-yarn-choosing-the-right-package-manager
Before getting started
npm๊ณผ Yarn์ ๋ชจ๋ ํ๋ฅญํ Node.js, JavaScript package manager๋ค
๊ทธ๋ ๋ค๋ฉด npm์ด ์ด๋ฏธ ์๋๋ฐ Yarn์ด ๊ฐ๋ฐ๋ ์ด์ ๋ ๋ฌด์์ผ๊น?
Yarn์ npm์ ๋๋ฆฐ package ์ค์น ์๋์ ๋ณด์ ์ด์๋ค์ ํด๊ฒฐํ๊ณ ์ Facebook์ ์ํด ๋ง๋ค์ด์ก๋ค
์ด ๊ธ์์๋ ์ด ๋ package maganger๋ฅผ ๋น๊ตํด์ ์ด๋ค ๊ฒ์ ์ฌ์ฉํ ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ ๋์์ฃผ๋๋ก ํ๊ฒ ๋ค
1. Parallel installation of packages
ํ๋์ package๊ฐ ์ค์น๋ ๋, ์ผ๋ จ์ ๊ณผ์ ์ด ๋ฐ๋ผ์ ์ํ๋๊ฒ ๋๋ค
์ฌ๋ฌ๊ฐ์ package๋ค์ ๋์์ ์ค์นํ ๋,
npm์ ํ๋์ package๊ฐ ์์ ํ ์ค์น๋๊ณ ๋์ ๊ทธ ๋ค์ package๋ฅผ ์ค์นํ๋ค
์ฆ, npm์ ๊ฐ๊ฐ์ package๋ค์ ์์๋๋ก ์ค์นํ๋ค
๋ฐ๋ฉด์ Yarn์ ์ด๋ฌํ ๊ณผ์ ์ ๋ณ๋ ฌ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ํจ์จ์ฑ๊ณผ ์๋๊ฐ ๋ ์ข๋ค
์์๋ก react๋ฅผ ๊ฐ๊ฐ์ package๋ฅผ ์ค์นํ์ ๋, ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ด์ ํ์ธํ ์ ์์๋ค
npm - 3.572์ด ์์
Yarn - 1.44์ด ์์
์ฐธ๊ณ :Yarn & npm benchmarks
2. Automatic Lock file generation
npm๊ณผ Yarn๋ชจ๋ package.json file์ ํตํด ์์กด์ฑ์ ๊ด๋ฆฌํ๋ค
์๋ก์ด dependency๋ฅผ ์ค์นํ ๋๋ง๋ค ํด๋น dependency์ version์ด caret (^) ๊ธฐํธ๋ก ์์ํ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค
์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ package๋ฅผ Install ํ ๋๋ง๋ค package manager๋ ๋ ์ต์ version์ ์ฐพ๋๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค
๋ ์ต์ ๋ฒ์ ์ด ์์ผ๋ฉด,
package.json
file์ ๋ช ์๋ version์ด ์๋ ์ต์ ๋ฒ์ ์ผ๋ก ์ค์นํ๋ค
๋ง์ฝ ์์ ๋์์ ์ํ์ง ์๋๋ค๋ฉด,
lock file ์ ์์ฑํ์ฌ ํน์ version์ ์ค์นํ๋๋ก ํ๊ฑฐ๋
carret (^) ๊ธฐํธ๋ฅผ ์ง์ฐ๋ ๋ฐฉ๋ฒ์ด ์๋ค
Yarn์ ์๋ก์ด dependency๊ฐ ์ถ๊ฐ๋ ๋๋ง๋ค ์๋์ ์ผ๋ก
yarn.lock
file์ ์์ฑํ๋คpackage ์ค์น ์์ ๋น์ ๋์ผํ version ์ ๋ณด๋ฅผ
yarn.lock
file์ ์ ์ฅํด๋ ์ผ๋ก์จ ์๋ก์ด ํผ๊ฒฝ์ ๊ตฌ์ถํ ๋๋ ๋์ผํ verson ์ ๋ณด๋ฅผ ๊ฐ์ง package๋ก ์ค์นํ ์ ์๋๋ก ๋์์ค๋ค
npm๋
npm shrinkwwrap
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์กด์ฑ ๋ฒ์ ์ ๊ณ ์ ์ํค๋ lock file์ ์์ฑํ ์ ์๋คํ์ง๋ง, ์ด ๋์ ์ฐจ์ด์ ์ Yarn์ ์ธ์ ๋
yarn.lock
file์ ์์ฑํ๊ณ update ํ๋ ๊ฒ์ ๋ฐํด npm์ lock file์ default๋ก ์์ฑํ์ง ์๊ณ ,npm-shrinkwrap.json
file์ด ์กด์ฌํ ๋๋ง ๋ด์ฉ์ update ํ๋คnpm v5.0 ์ดํ๋ก๋ ์์กด์ฑ ํธ๋ฆฌ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋
package-lock.json
์ ๋์ ํ์ฌ npm์ ์ฌ์ฉํ์ฌpackage.json
file ๋๋node_modules
tree๋ฅผ ์์ ํ๋ฉดpackage-lock.json
file ์ ๊ธฐ๋กํ๋๋ก ํ์๋ค์ด๊ฒ์ผ๋ก npm์ package ์ค์น ๊ณผ์ ๊ณผ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์์ง๋ง, ์ฌ์ ํ yarn์ ์๋๋ฅผ ๋ฐ๋ผ์ก์ง๋ ๋ชปํ๊ณ ์๋ค
3. Security
npm์ package๋ค์ ์ค์นํ๋ ๋์ค์ ์ฝ๋๋ฅผ ์ฆ๊ฐ ์คํ์ํค๋ ๊ฒ์ ํ์ฉํ๊ณ , ์ด๊ฒ์ผ๋ก ์ธํด ๋ณด์์ ์ทจ์ฝ์ฑ์ด ๋ฐ์ํ ์ ์๋ค
๋ฐ๋ฉด์, Yarn์
yarn.lock
๋๋package.json
์ ๋ช ์๋์ด ์๋ file๋ค๋ง ์ค์นํ๊ณ ,yarn.lock
์ ํตํด ๊ณ ์ ๋ ์์กด์ฑ ๋ฒ์ ์ ์ค์นํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ device์ ๊ฐ์ package๋ฅผ ์ค์นํ๊ธฐ ๋๋ฌธ์ npm๋ณด๋ค ์์ ํ๋ค
Yarn์ ์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ์ checksum์ ์ฌ์ฉํ์ฌ ์ค์น๋ package๋ค์ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ๋ฅผ ์งํํ๋ค
Wrap-up
๋น ๋ฅด๊ณ , ์์ ์ฑ, ์ ๋ขฐ์ฑ์ ๊ฐ๊ณ ์๋ Yarn์ ์ฐ์
Last updated