๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
React

yarn berry๋กœ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ, zero-install์ด๋ž€?

by LasBe 2024. 1. 18.
๋ฐ˜์‘ํ˜•

๐Ÿ“’ yarn berry๋กœ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ


๊ธฐ์กด ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ๋Œ€๋น„ yarn berry์˜ ๊ฐ€์žฅ ํฐ ๋ณ€ํ™” ์ค‘ ํ•˜๋‚˜๋Š” Plug'n'Play (PnP) ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

 

PnP๋Š” node_modules ํด๋”๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ€์‹ , Yarn์€ ํ”„๋กœ์ ํŠธ ์„ค์ •๊ณผ ์˜์กด์„ฑ ์ •๋ณด๋ฅผ .pnp.js ํŒŒ์ผ์— ์ €์žฅํ•˜์—ฌ, Node.js๊ฐ€ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์ง์ ‘ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

์„ค์น˜ ์†๋„๋ฅผ ๋†’์ด๊ณ  ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๋Š” yarn berry์˜ zero-install์„ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„ค์น˜ ๋ฐฉ๋ฒ•๊ณผ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ yarn beery ์„ค์ •

๐Ÿ”Ž 1. Node.js ์„ค์น˜

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

yarn์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” node ํŒจํ‚ค์ง€์— ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ๋œ npm์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

์„ค์น˜ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์šฐ์„  ์œ„ ๋งํฌ ํ˜น์€ nvm์„ ์ด์šฉํ•ด node๋ฅผ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค.

 

๐Ÿ”Ž 2. yarn ์„ค์น˜

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์ธ yarn์„ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค.

$ npm install -g yarn
$ yarn --version

๐Ÿ“Œ ๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ์— yarn berry ์ ์šฉ

๐Ÿ”Ž 1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

๋ฆฌ์•กํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ๋™ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ๋ชจ๋“ˆ๋“ค์„ ์ผ๊ด„์ ์œผ๋กœ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ์„  CRA๋ฅผ ์ด์šฉํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

$ npx create-react-app yarn-berry-app --template typescript

 

๐Ÿ”Ž 2. npm ๊ด€๋ จ ํŒŒ์ผ ์‚ญ์ œ

yarn-berry์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์ธ zero-install์„ ์‚ฌ์šฉํ•˜๋ฉด node_modules ํด๋”๊ฐ€ ์—†์–ด ํด๋” ์šฉ๋Ÿ‰์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ npm์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ๋ถ€์‚ฐ๋ฌผ์ธ node_modules์™€ package.lock.json์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋”ฐ๋ผ์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

yarn-berry๋กœ ์ „ํ™˜์„ ์œ„ํ•ด ์ด ๋‘ ์˜์กด์„ฑ ๋ถ€์‚ฐ๋ฌผ๋“ค์„ ์ง€์›Œ์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

 

๐Ÿ”Ž 3. ํ”„๋กœ์ ํŠธ์— yarn berry ์ ์šฉ

$ yarn set version berry

์„ฑ๊ณต์ ์œผ๋กœ berry ๋ฒ„์ „์ด ์ ์šฉ๋˜์—ˆ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ๋กœ๊ทธ๋“ค์ด ํ‘œ์‹œ๋˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค.

 

$ yarn install

ํŒจํ‚ค์ง€ ์„ค์น˜๋ฅผ ๋๋งˆ์ณค๋‹ค๋ฉด ํด๋”์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒŒ์ผ ๊ตฌ์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

๐Ÿ“’ zero-install ์ž‘๋™๋ฐฉ์‹


๋ฌธ๋“ ์„ค์น˜ ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๋‹ค ํŒจํ‚ค์ง€๊ฐ€ ์••์ถ•๋˜์–ด ์žˆ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ํŒจํ‚ค์ง€๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

์ฐพ์•„๋ณด๋‹ˆ ์ด๋Ÿฌํ•œ yarn-berry์˜ ์ž‘๋™ ๋ฐฉ์‹์€ PnP(Plug’n’Play)์— ์˜ํ•ด ์••์ถ•๋˜์–ด์ง„ ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ Plug'n'Play (PnP) ์ž‘๋™ ๋ฐฉ์‹

๐Ÿ”Ž ํŒจํ‚ค์ง€ ์„ค์น˜ ์œ„์น˜

yarn์˜ ์„ค์ • ํŒŒ์ผ(.yarnrc.yml)์„ ํ™•์ธํ•˜์—ฌ ์บ์‹œ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์–ด๋””๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ”Ž ์••์ถ•๋œ ํŒŒ์ผ ์‚ฌ์šฉ

์„ค์น˜๋œ ํŒจํ‚ค์ง€๋Š” .zip ํ˜•ํƒœ๋กœ ์••์ถ•๋˜์–ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. Yarn Berry๋Š” ์ด ์••์ถ•๋œ ํŒŒ์ผ๋“ค์„ ์ง์ ‘ ์ฝ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ , ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ”Ž .pnp.js ๋˜๋Š” .pnp.cjs

Yarn Berry๋Š” .pnp.js ๋˜๋Š” .pnp.cjs ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ, ์–ด๋–ค ํŒจํ‚ค์ง€๊ฐ€ ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

์ด ํŒŒ์ผ์€ Node.js๊ฐ€ ์–ด๋–ค ์š”์ฒญ์„ ์–ด๋–ค ํŒจํ‚ค์ง€๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ• ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ”Ž ํŒจํ‚ค์ง€ ํ•ด์„

Node.js๋Š” ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ์ฐพ์„ ๋•Œ .pnp.js ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์—ฌ ์••์ถ•๋œ ํŒŒ์ผ ๋‚ด์—์„œ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์ง์ ‘ ์ฐพ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์ „ํ†ต์ ์ธ node_modules ๋ฐฉ์‹๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์ด๋ฉฐ, "๋ชจ๋“ˆ ์ง€์˜ฅ" ๋ฌธ์ œ๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ”Ž Zero-Install

Yarn Berry์˜ Zero-Install ๊ธฐ๋Šฅ์€ .yarn/cache์— ์ €์žฅ๋œ ํŒจํ‚ค์ง€๋ฅผ ํ”„๋กœ์ ํŠธ์™€ ํ•จ๊ป˜ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์— ํฌํ•จ์‹œํ‚ต๋‹ˆ๋‹ค.

์ด๋กœ ์ธํ•ด ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋‚˜ CI/CD ์‹œ์Šคํ…œ์—์„œ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€ ์„ค์น˜ ๊ณผ์ • ์—†์ด๋„ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€


์˜คํ”ˆ ์ฑ„ํŒ