FE/Next.js

[Next.js] Yarn berry๋กœ Next.js ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ธฐ

unhandled 2025. 3. 13. 01:06

 

yarn? yarn berry๐Ÿซ? npm? pnpm?

์ด๊ฒƒ๋“ค์€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์•ผ. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋กœ npm๊ณผ yarn๋งŒ ์‚ฌ์šฉํ•ด ๋ดค๋‹ค.

์š”์ฆ˜ ๊ณต๊ณ ๋ฅผ ๋ณด๋ฉด yarn berry ๋‚ด์ง€๋Š” pnpm์ด๋ผ๋Š” ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋“ค์ด ๋งŽ์ด ๋ณด์—ฌ์„œ ๊ถ๊ธˆํ–ˆ๋‹ค.

์ „์— ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ ์šฐ๋ฆฌ ํŒ€์€ ์•„๋‹ˆ๊ณ  ๋‹ค๋ฅธ ํŒ€์ด์—ˆ๋Š”๋ฐ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋กœ yarn berry๋ฅผ ์“ด๋‹ค๋Š” ๋ถ„์ด ์žˆ์—ˆ์–ด. ๋‚œ ์ฒ˜์Œ ๋“ค์–ด๋ณธ ๊ฑฐ๋ผ ๊ถ๊ธˆํ•ด์„œ ๋ฌผ์–ด๋ดค๊ฑฐ๋“  ๊ทธ๋•Œ ๊ทธ๋ถ„์€ yarn berry์˜ ์ด์ ์ด ์žˆ์–ด์„œ ๊ทธ๊ฒƒ์„ ์ฑ„ํƒํ–ˆ์ง€๋งŒ ์ดˆ๊ธฐ์„ค์ •์ด ์ข€ ๋ณต์žกํ–ˆ๋‹ค๋Š” ์‹์œผ๋กœ ์–ธ๊ธ‰ํ–ˆ์—ˆ์–ด. 

 

yarn์˜ ๋ฒ„์ „ 2 ์ด์ƒ์€ ์ „๋ถ€ yarn berry๋กœ ์นญํ•œ๋‹ค๊ณ  ํ•ด

(๊ณ ๋กœ ๋‚˜๋Š” yarn 4.7.0์„ ์„ค์น˜ํ–ˆ์ง€๋งŒ ์–˜๋„ yarn berry์ธ ๊ฒƒ์ด๋‹ค. yarn candy๋‚˜ yarn cream์ด ์•„๋‹ˆ๊ณ . ๊ณผ๊ฑฐ์— ์•ˆ๋“œ๋กœ์ด๋“œ๊ฐ€ ๋ฒ„์ „์ด ํ•˜๋‚˜ ์˜ฌ๋ผ๊ฐˆ ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ๋””์ €ํŠธ๋ช…์„ ๋ถ™์˜€๋˜ ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅด๋„ค.)

yarn ๋ฒ„์ „ 1์€ yarn classic์ธ๋ฐ ๊ทธ๋ƒฅ yarn์œผ๋กœ ๋ถˆ๋ฆฌ๋Š” ์• ๋ผ ํ•œ๋‹ค.

 

 

yarn berry๋ฅผ ์“ฐ๋Š” ์ด์œ 

๋ฌด๊ฑฐ์šด node.modules์„ ์–ด์ฐŒ์–ด์ฐŒ ๋Œ€์ฒดํ•ด์„œ ์„ค์น˜ ์‹œ๊ฐ„๊ณผ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ค„์—ฌ์ฃผ๋Š” ๊ฒŒ ํฐ ์ด์  ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฒ ๋ฆฌ๋Š” ๋ง›์žˆ๋‹ค. 

 

 

๋„์ „ํ•œ ์ด์œ ๋Š”

์–ด์ฐจํ”ผ ํฌํŠธํด๋ฆฌ์˜ค์šฉ ์›น์‚ฌ์ดํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค๋ ค๊ณ  ํ–ˆ๊ธฐ์— ๊ธฐ์™• ๋งŒ๋“œ๋Š” ๊ฑฐ ์•ˆ ์จ๋ณธ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ์จ๋ณด๊ณ  ์‹ถ์—ˆ์–ด. ์ € ๋‹ค๋ฅธ ํŒ€์› ๋ถ„์˜ ๋ง๋กœ ์ธํ•ด ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ธฐ๊ธฐ๋„ ํ–ˆ์—ˆ๊ณ . ๊ทธ๋ฆฌ๊ณ  ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ € ์„ค์ •์ด ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์ง€๋Š” ์•Š์•˜๊ฑฐ๋“ . ๊ฒฐ๊ตญ์—๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์ง€๋งŒ..  ๋‹ค์Œ์—๋Š” pnpm๋„ ๊ถ๊ธˆํ•œ๊ฑธ?

 

 

๋„์ „ํ•œ ์†Œ๊ฐ์€

ํƒˆํƒˆ ํ„ธ๋ ธ๋‹ค. ์‚ฌ์‹ค ์•„์ฃผ ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์–ด๋ ค์šด ๊ณผ์ •์ด ์•„๋‹ˆ์—ˆ๋Š”๋ฐ ๋‚ด ์˜๋„๋Œ€๋กœ ๋˜์ง€ ์•Š์•„์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์ƒ์„ฑํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์ง€์šฐ๊ณ  ๋‚œ๋ฆฌ๋ฅผ ์ณค๋‹ค. ์ค‘๊ฐ„์— ๊ทธ๋ƒฅ ๋‹ค ๊ทธ๋งŒ๋‘๊ณ  ํ‰์†Œ์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ• ๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋“ค์—ˆ๋Š”๋ฐ ๊ฒฐ๊ตญ ๋˜์—ˆ๋‹ค! ๋งŽ์€ ์‹œ๊ฐ„์„ ์žก์•„๋จน๊ธด ํ–ˆ์ง€๋งŒ... ์•Œ๊ณ  ๋ณด๋‹ˆ ๋ฉ”์ธ ํ•ด๊ฒฐ์ฑ… ์ค‘ ํ•˜๋‚˜๋Š” vscode extension์„ ์„ค์น˜ํ•ด์•ผ ๋˜๋Š” ๊ฒƒ์ด์–ด์„œ ์กฐ๊ธˆ ํ—ˆ๋ฌดํ–ˆ๋‹ค.

 

ํ•˜ ๊ทผ๋ฐ ์ƒˆ๋กœ์šด ๊ฐœ๋…์„ ๋ฐฐ์šด ๊ฒƒ๋„ ์ข‹๊ณ  ์‹œ๋„ํ•œ ๊ฒƒ๋„ ์ข‹์•„ ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ ์„ฑ๊ณตํ•œ ๊ฒƒ๋„ ์ข‹์€๋ฐ ๋‚œ ํฌํด ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”๋ฐ.. ์˜ค๋Š˜์€ ์ด๊ฑฐ ํฌ์ŠคํŒ…ํ•˜๊ณ  ๊ฐœ๋… ์ •๋ฆฌํ•˜๊ณ  ๊ณต๋ถ€ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„ ๋‹ค ๊ฐ„ ๊ฒƒ ๊ฐ™์•„....

 

 

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

 

๋ฏธ๋ฆฌ ๋งํ•ด๋‘ก๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ํด๋” ๊ฒฝ๋กœ์— ํ•œ๊ธ€๋ช… ํด๋”๊ฐ€ ์—†๋„๋ก ํ•˜์„ธ์š”.

/๋ฐ”ํƒ•ํ™”๋ฉด/project ์ด๋Ÿฐ ๊ฑฐ ์•ˆ๋ฉ๋‹ˆ๋‹ค.

 

์™œ๋ƒ๋ฉด ๋‚ด๊ฐ€ ์ด๋žฌ๋‹ค๊ฐ€ ํ”„๋กœ์ ํŠธ ํด๋”๋ฅผ ์˜ฎ๊ฒผ๊ฑฐ๋“ 

์ง€๊ธˆ๊นŒ์ง€ ๋ฐ”ํƒ•ํ™”๋ฉด์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ ๊ฒƒ์ด ๋ฌธ์ œ๊ฐ€ ๋œ ์ ์ด ์—†์—ˆ๋Š”๋ฐ ๋ง์ด์•ผ

 

์™œ ๊ทธ๋Ÿด๊นŒ?

 

Yarn Berry์˜ PnP(Plug'n'Play) ์‹œ์Šคํ…œ์€ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒจํ‚ค์ง€์˜ ์œ„์น˜๋ฅผ ์ถ”์ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํด๋” ์œ„์น˜๋ฅผ ์˜ฎ๊ธฐ๋ฉด .yarn/cache ํŒŒ์ผ๊ณผ .pnp.cjs ํŒŒ์ผ์— ์žˆ๋Š” ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ฐธ์กฐ๊ฐ€ ๋” ์ด์ƒ ์œ ํšจํ•˜์ง€ ์•Š๊ฒŒ ๋ผ. ๊ทธ๋ž˜์„œ ์ด ์ƒํƒœ์—์„œ yarn dev๋กœ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฑฐ์•ผ. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด yarn install์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋ผ. ๊ทธ๋Ÿฌ๋ฉด yarn berry๊ฐ€ ํ˜„์žฌ ์œ„์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ด๋Ÿฌํ•œ ์ฐธ์กฐ๋ฅผ ์žฌ์„ค์ •ํ•˜๊ฑฐ๋“ .

 

๋‚œ ์ด ์‚ฌ์‹ค์„ ์•Œ๊ณ  ๋‚œ ํ›„ ์•„๊นŒ ํ•œ๊ธ€ ๊ฒฝ๋กœ ๋•Œ๋ฌธ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ๋„ ๊ธฐ์กด์˜ npm์˜ ๋ฐฉ์‹๊ณผ๋Š” ๋‹ฌ๋ฆฌ yarn berry๋Š” ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์–ด. ํŒจํ‚ค์ง€ ์œ„์น˜๋ฅผ ์ถ”์ ํ•˜๋Š”๋ฐ ๊ฒฝ๋กœ์— ์˜๋ฌธ์ด ์•„๋‹Œ ํ•œ๊ธ€์ด ์žˆ์–ด์„œ ํŒŒ์‹ฑ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฑฐ์˜€์–ด. ๋„ˆํฌ๋Š” ์ง€๊ธˆ ์ด ๊ธ€์„ ๋ณด๊ณ  ์žˆ์ง€๋งŒ ์ด๋Ÿฐ ๋‚ด์šฉ์„ ์•Œ๋ ค์ฃผ๋Š” ๋ธ”๋กœ๊ทธ๊ธ€์„ ๋‚˜๋Š” ์•„๊นŒ ์ด๊ฑฐ ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ๋Š” ๋ชป ๋ดค์–ด... ์ง€๊ธˆ ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰ํ•˜๋‹ˆ๊นŒ ๋œจ๊ธด ํ•˜๋Š”๋ฐ... ๋‚˜๋Š” ๋„ˆํฌ๊ฐ€ ์ด๋Ÿฐ ์ƒํ™ฉ์„ ๊ฒช๋Š” ๊ฒƒ์„ ๋ง‰์œผ๋ ค๊ณ  ์ด๋ฅผ ๋ฏธ๋ฆฌ ์–ธ๊ธ‰ํ•˜๋Š” ๊ฑฐ์•ผ

 

 

์‹œ์ž‘ํ•˜์ž

 

๊ทธ๋ƒฅ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์€ ํ‰์†Œ์ฒ˜๋Ÿผ ํ•˜์ž

 

npx create-next-app@latest

 

 

์ผ๋‹จ Turbopack ์ € ๋ถ€๋ถ„ ์žˆ์ž–์•„ ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋ณ„์ƒ๊ฐ ์—†์ด ์„ฑ๋Šฅ์ ์œผ๋กœ ์ข€ ๊ฐœ์„ ๋˜๋Š” ๊ฒŒ ์žˆ์„๊นŒ ์‹ถ์–ด์„œ Yes๋ฅผ ๋ˆŒ๋ €์—ˆ๊ฑฐ๋“ . ๊ทธ๋Ÿฐ๋ฐ ์ด๋ฒˆ์—๋„ Yes๋ฅผ ๋ˆ„๋ฅด๋‹ˆ๊นŒ ๋ฌด์–ธ๊ฐ€ ์ถฉ๋Œํ•œ ๊ฑด์ง€ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธฐ๋Š” ์ƒํ™ฉ์„ ๋งˆ์ฃผํ•˜๊ฒŒ ๋ผ๋ฒ„๋ ธ์ง€ ๋ญ์•ผ ๊ทธ๋ž˜์„œ No๋ฅผ ์„ ํƒํ–ˆ์–ด. 

 

 

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธํด๋”๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

cd berry-berry-strawberry

 

 

์•„ ๋งž์•„

๋‚œ ์ด๋ฏธ ๊น”๋ ค์žˆ์ง€๋งŒ yarn ์—†์œผ๋ฉด ์„ค์น˜ํ•ด์•ผ ํ•ด 

npm install -g yarn

 

 

๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ณ์ฃผ์ž.

์ด ํ”„๋กœ์ ํŠธ ํด๋”์—์„œ์˜ yarn๋ฒ„์ „์„ stable ๋ฒ„์ „์œผ๋กœ ์„ธํŒ…ํ•˜๊ฒ ๋‹ค๋Š” ๊ฑฐ์•ผ.

(์ด ๊ธ€์„ ์“ฐ๋Š” ์ง€๊ธˆ์€ 4.7.0 ๋ฒ„์ „์ด๋„ค)

 yarn set version stable

 

๋ญ ์ด๋Ÿฐ ๊ฒŒ ๋œจ๋Š”๋ฐ Corepack์ด ํ™œ์„ฑํ™”๋˜์–ด์žˆ์ง€ ์•Š์•„ yarnPath๋กœ ๋Œ€์‹ ํ•˜๊ฒ ๋‹ค๋Š” ๋‚ด์šฉ ๊ฐ™์•„.

ํ˜„์žฌ stable ๋ฒ„์ „์ด ์ตœ์‹ ์ด๋ผ ์ด๋Ÿฐ ์•ˆ๋‚ด๊ฐ€ ๋œจ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ์ด๋Ÿฌํ•œ Corepack ์ถ”๊ฐ€ ์„ค์ •์ด ๋ฒˆ๊ฑฐ๋กœ์›Œ์„œ yarn berry๋ฅผ ์ด์ „ ๋ฒ„์ „(3.7.0)์œผ๋กœ ์„ค์น˜ํ–ˆ๋‹ค๋Š” ํฌ์ŠคํŒ…๋„ ๋ดค์—ˆ์–ด. ๊ทผ๋ฐ ๊ทธ ํฌ์ŠคํŒ… ๋‹ค์‹œ ๋ณด๋‹ˆ๊นŒ ๊ทธ๋•Œ๋Š” stable ๋ฒ„์ „์ด (4.0.2)์˜€๋‚˜ ๋ด. ๋‚ด ์ถ”์ธก์œผ๋กœ ๊ทธ๋•Œ๋Š” ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒŒ ์žˆ์—ˆ๋‚˜ ๋ณธ๋ฐ ๋‚˜๋Š” ๊ทธ๋Ÿฐ ๊ฒŒ ์•ˆ ๋œจ๋Š” ๊ฑธ ๋ณด๋‹ˆ (4.7.0) ๋ฒ„์ „์œผ๋กœ ์˜ค๋ฉด์„œ ๊ฐœ์„ ๋œ ๊ฑฐ๊ฒ ์ง€? ์ง€๊ธˆ ๋‹น์žฅ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋Š” ์—†์œผ๋‹ˆ ์ด๋Œ€๋กœ ์ง„ํ–‰ํ•ด ๋ณด์ž. 

 

 

๊ทธ๋ฆฌ๊ณ  node_modules๋ž‘ package.lock.json์„ ์‚ญ์ œํ•˜์ž.

 

์™œ๋ƒ๋ฉด node_modules๋Š” yarn berry์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„.

node_modules์˜ ๋น„๋Œ€ํ•จ ๋•Œ๋ฌธ์— ๋Œ€์ฒด์ ์ธ ๋ฐฉ๋ฒ•์„ ๋‚ด์„ธ์›Œ์„œ ๋‚˜์˜จ ๊ฒŒ yarn berry๋‹ˆ๊นŒ ์• ์ดˆ์— ์ง€๊ธˆ ์ƒํ™ฉ์—์„œ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ์ธ๊ฑฐ์ง€.

๊ทธ๋ฆฌ๊ณ  package.lock.json์€ yarn.lock์ด๋ž‘ ์ถฉ๋Œํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ๋„ ๊ฐ™์ด ์‚ญ์ œํ•˜์ž

 

 

 

 

๊ทธ๋ฆฌ๊ณ . yarnrc.yml ํŒŒ์ผ์„ ๊ฐ€๋ฉด yarnPath๋งŒ ์ •์˜๋˜์–ด ์žˆ๊ณ 

nodeLinker์— ๋Œ€ํ•œ ์ •์˜๋Š” ์—†์„ ๊ฑฐ์•ผ.

 

nodeLinker: pnp

 

์ด๊ฒƒ๋„ ์ถ”๊ฐ€ํ•ด ์ฃผ์ž. 

 

 

 

๊ทธ๋ฆฌ๊ณ  yarn ์„ค์น˜์“ฐ

yarn install

 

๊ทธ๋ฆฌ๊ณ  gitignore์— ์ด๊ฑฐ ์ถ”๊ฐ€ํ•˜์ž

 

### yarn ###
# used Zero-Install
.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

# unused Zero-Install
.yarn/*
!.yarn/patches
!.yarn/releases
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
.pnp.*

 

๋‘˜ ๋‹ค ๊ฐ™์ด ์ถ”๊ฐ€ํ•˜๋Š” ๊ฑด ์•„๋‹Œ ๊ฒƒ ๊ฐ™๊ณ  ๋‚ด๊ฐ€ Zero-Install์„ ์‚ฌ์šฉํ•  ๊ฑฐ๋ฉด ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฑฐ๋ฉด ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ gitignore์— ๋ณต๋ถ™ ํ•˜๋ฉด ๋˜๊ฒ ๋„ค.

 

yarn berry์˜ Zero-Install ์ด๋ž€?

  • yarn berry์˜ Zero-Install ๊ธฐ๋Šฅ์€ ๊นƒ์ €์žฅ์†Œ์— ๋” ๋งŽ์€ ํŒจํ‚ค์ง€๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ฑฐ์•ผ. ๊ทธ๋ž˜์„œ ์ถ”๊ฐ€์ ์ธ yarn install์ด ํ•„์š” ์—†๋‹ค๋Š” ์˜๋ฏธ์—์„œ Zero-Install์ธ ๊ฑฐ์•ผ. ์›๋ž˜ ํ”„๋กœ์ ํŠธ ์ƒˆ๋กœ ํด๋ก  ๋ฐ›๊ฑฐ๋‚˜ ๊ทธ๋Ÿฌ๋ฉด ๋งค๋ฒˆ ์˜์กด์„ฑ ์„ค์น˜(npm install)ํ•ด์คฌ์ž–์•„? Zero-Install์€ ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ๊ฑฐ์ง€
  • ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ„๋‹จํ•œ ์ •์  ํฌํŠธํด๋ฆฌ์˜ค ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค๋ ค๋Š” ๊ฑฐ๋‹ˆ๊นŒ Zero-Install ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋” ์ ์ ˆํ•  ๊ฒƒ ๊ฐ™์•„. ๊ทธ๋Ÿฌ๋ฉด ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ํŒจํ‚ค์ง€๊ฐ€ ๋ฌด๊ฑฐ์›Œ์งˆ์ˆ˜๋ก Zero-Install์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ ์ ˆํ•œ ๋ฐฉํ–ฅ์ผ๊นŒ? ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์ผ์ˆ˜๋ก ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ค์ • ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋‹ˆ๊นŒ ์˜คํžˆ๋ ค Zero-Install์˜ ์ด์ ์ด ๋” ํด ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด. (ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ ์‚ผ์•„ ์›๊ฒฉ์ €์žฅ์†Œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค๋ฅธ ํด๋”์— git clone์œผ๋กœ ๊ฐ€์ ธ์™”๊ฑฐ๋“  ๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฐ zero-install ์„ค์ •์„ gitignore์— ๋„ฃ์—ˆ์Œ์—๋„ yarn install์„ ํ–ˆ์–ด์•ผํ–ˆ์–ด.. ์™œ๊ทธ๋Ÿด๊นŒ.. ์ด๊ฒƒ๋„ ๋‹ค์‹œ ์•Œ์•„๋ด์•ผํ•  ๊ฒƒ ๊ฐ™์•„. ๊ทธ๋ฆฌ๊ณ  ์ œ๋กœ ์ธ์Šคํ†จ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด .yarnrc.yml ํŒŒ์ผ์— "enableGlobalCache: false"๋ฅผ ์„ค์ •ํ•ด์ค˜์•ผ yarn build ๋ช…๋ น์–ด๋ฅผ ์นœ ํ›„์— yarn/cache ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ๊ทธ ์•ˆ์— zipํŒŒ์ผ๋“ค์ด ์ƒ์„ฑ๋ผ)
  • ๋ณด๋ฉด ์ œ๋กœ ์ธ์Šคํ†จ์€!. yarn/cache๋ผ๋Š” ์• ๊ฐ€ gitignore์— ํฌํ•จ๋ผ์„œ ๊นƒ์— ์˜ฌ๋ผ๊ฐ€. (์•ž์— ! ๊ฐ€ ๋ถ™์€๊ฑด gitignore์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๊ฒ ๋‹ค๋Š” ๋œป์ด์•ผ) ๋ฐ˜๋Œ€๋กœ ์ œ๋กœ์ธ์Šคํ†จ์„ ์•ˆ ์“ฐ๋Š” ๊ฒฝ์šฐ๋Š” .pnp.*๊ฐ€ gitignore์— ํฌํ•จ๋ผ์„œ ๊นƒ์— ์•ˆ ์˜ฌ๋ผ๊ฐ€. ๋งž์•„ ์ด๊ฑฐ ์•„๊นŒ ์•ž์—์„œ ์—๋Ÿฌ ๋ถ€๋ถ„์—์„œ ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค๊ณ  ์–ธ๊ธ‰ํ•œ ๋‘ ํŒŒ์ผ ์•„๋‹ˆ์—ˆ์–ด? ๊ทธ๋Ÿผ ์–˜๋„ค์˜ ์—ญํ• ์€ ๋ฌด์—‡์ผ๊นŒ? 

 

[yarnpkg] ์–ด๋–ค ํŒŒ์ผ์ด gitignored ๋˜์–ด์•ผ ํ• ๊นŒ์š”? 

๋ฐ”๋กœ ์–ธ๊ธ‰ํ•œ ๋‚ด์šฉ์— ํ•ด๋‹นํ•˜๋Š” yarn์˜ ๊ณต์‹ ๋ฌธ์„œ ๋งํฌ์•ผ. ์ฐธ๊ณ ํ•ด!

 

 

์ž ์ด์ œ ๋๋‚ฌ๋‚˜? ํ•˜๋Š” ์ˆœ๊ฐ„

ts, tsx ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด ๋นจ๊ฐ„ ์ฃฝ์ด ์ข์ข ๊ฐ€์žˆ๋Š” ๊ฒŒ ๋ณด์—ฌ. 

 

 

ํ•˜ํ•˜ํ•˜.

 

ts, tsx ํ™•์žฅ์ž ํŒŒ์ผ์—์„œ๋งŒ ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋œจ๋Š” ๊ฑธ ๋ณด์•„ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์™€ pnp๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์— ์žˆ์–ด์„œ ๋ฌด์–ธ๊ฐ€ ์ถฉ๋Œ์ด๋‚˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ ๊ฐ™์ง€ ์•Š์•„? ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ node_modules ํด๋” ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ผ ํƒ€์ž…์„ ์ฐพ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ์–ด. ๊ทผ๋ฐ yarn berry์˜ pnp ์‹œ์Šคํ…œ์€ ์ด๋Ÿฌํ•œ node_modules๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋‹ˆ๊นŒ ์ด์— ๊ด€๋ จํ•ด์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์•„.

์ด ๋ถ€๋ถ„๋„ ์ž์„ธํžˆ ์•Œ์•„๋ด์•ผ๊ฒ ์–ด. 

 

๋‹ค์Œ ๋ช…๋ น์–ด ๊ณ .

yarn dlx @yarnpkg/sdks vscode

 

๊ทธ๋ฆฌ๊ณ  vscode๋ฅผ ๊ป๋‹คํ‚ค๋ฉด

 

 

๋†€๋ผ์šฐ๋ฆฌ๋งŒํผ ์•„๋ฌด๋Ÿฐ ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค!

 

ํ•˜ํ•˜ํ•˜ํ•˜. 

 

vscode ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•ด์•ผ ํ•ด. 

extensions์— ๋“ค์–ด๊ฐ€์„œ zip์ด๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด 

ZipFS๋ผ๋Š” ๊ณ ์–‘์ด ๋“ค์–ด๊ฐ„ ์•Œ์ง‘ ๊ฐ™์€ ๊ฒŒ ์žˆ์Œ

 

 

๊ท€์—ฌ์šฐ๋‹ˆ๊นŒ ์„ค์น˜ํ•˜๋„๋ก

 

 

๊ทธ๋ฆฌ๊ณ  vscode ๊ป๋‹ค ์ผœ

์žฌ์‹œ์ž‘ํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๊ฒŒ ํ•˜๋‹จ์— ๋– 

 

 

Allow ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋นจ๊ฐ„ ์ค„์ด ์‹ธ์•…-์‚ฌ๋ผ์ง„๋‹ค

 

๋งŒ์•ฝ ์ €๊ฒŒ ์•ˆ ๋œจ๋ฉด... ๋งž์•„ ๋‚˜๋„ ์ด๊ฒŒ ์•ˆ ๋– ์„œ ๊ณ ์ƒํ–ˆ์–ด...

ts ํŒŒ์ผ ์ผœ๋†“๊ณ  ๊ฑฐ๊ธฐ์„œ ctrl + shift +  p ๋ˆŒ๋Ÿฌ์„œ typescript workspace ๋ณ€๊ฒฝ์„ ์ฐพ์œผ๋ ค๋Š”๋ฐ ์•ˆ ๋–ด๊ฑฐ๋“ ..

์œ„์™€ ๊ฐ™์€ ํƒœ๋„๋Š” ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ๊ธ€์ด๋ผ๊ธฐ์—” ๋„ˆ๋ฌด ๋ฌด์ฑ…์ž„ํ•˜์ง€? ์ด๊ฒƒ๋„ ๋‚ด๊ฐ€ ๋‹ค์‹œ ์ฐพ์•„๋ณผ๊ฒŒ

 

(์œ„์˜ yarn dlx @yarnpkg/sdks vscode ์ด ๋ช…๋ น์–ด๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ถ€๋ถ„๊ณผ ๋ฐฉ๊ธˆ ๊ณ ์–‘์ด ์ต์Šคํ…์…˜์„ ์„ค์น˜ํ•œ ๊ฒƒ์€ yarn berry๊ฐ€ zipํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๊ด€๋ฆฌํ•ด์„œ์•ผ.. ๊ทผ๋ฐ ๊ฐœ๋…์ ์ธ ๊ฑด ๋‚˜์ค‘์— ์ถ”๊ฐ€ํ• ๊ฒŒ ๋„ˆ๋ฌด ์กธ๋ฆฌ๊ฑฐ๋“ .. ์ผ๋‹จ์€ ๋‹น์žฅ ์‹ค์šฉ์ ์ธ ๋‚ด์šฉ๋งŒ ์ ์„๊ฒŒ)

 

์ด์ œ ์‹คํ–‰ํ•ด ๋ณผ๊นŒ

 

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ํด๋”์—์„œ yarn dev ํ•˜๋ฉด

 

ใ…‹ใ…‹ ์—๋Ÿฌ๋œธ

๋ท€๊นข ๋ถพ ๋‚œ๋ฆฌ ๋‚ฌ๋„ค

๊ฒฝ๋กœ์— ํ•œ๊ธ€ ํด๋”๊ฐ€ ์žˆ์–ด์„œ ๊ทธ๋Ÿฐ ๊ฒƒ ๊ฐ™์•„ (์—ฌ๊ธฐ์„œ ์™œ ์—๋Ÿฌ๊ฐ€ ๋œฌ ๊ฑด์ง€ ์ดˆ๋ฐ˜์— ๋ฏธ๋ฆฌ ํ•œ๋ฒˆ ์–ธ๊ธ‰ํ–ˆ์–ด. ๊ถ๊ธˆํ•˜๋ฉด ์œ„๋กœ ์˜ฌ๋ ค๋ณด์ž!)

 

 

๋งŒ์•…์˜ ๊ทผ์› == ๋ฐ”ํƒ• ํ™”๋ฉด

 

 

 

๊ฒฝ๋กœ์— ์˜๋ฌธ๋ช… ํด๋”๋งŒ ์žˆ๋„๋ก ํ”„๋กœ์ ํŠธ ํด๋” ์œ„์น˜๋ฅผ ์•„์˜ˆ ์˜ฎ๊ฒผ์–ด

 

 

๊ทผ๋ฐ๋„ ์—๋Ÿฌ๋œธ ใ…‹ใ…‹ (์—ฌ๊ธฐ์„œ๋„ ์™œ ์—๋Ÿฌ๊ฐ€ ๋œฌ ๊ฑด์ง€ ์ดˆ๋ฐ˜์— ๋ฏธ๋ฆฌ ํ•œ๋ฒˆ ์–ธ๊ธ‰ํ–ˆ์–ด2 ๊ถ๊ธˆํ•˜๋ฉด ์œ„๋กœ ์˜ฌ๋ ค๋ณด์ž! )

 

๊ทผ๋ฐ ์—๋Ÿฌ๋‚ด์šฉ ๋ณด๋ฉด yarn install ํ•˜๋ผ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€?

 

 

๊ทธ๋ž˜์„œ ํ–ˆ์–ด...

 

 

 

๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์ž˜๋์–ด...

 

 

 

์ •๋ง.. ์ด ์ต์ˆ™ํ•œ ํ™”๋ฉด ๋ณด๊ธฐ๊ฐ€ ์™œ ์ด๋ฆฌ ํž˜๋“ค์—ˆ๋Š”์ง€ ์‹ถ์–ด..