๐Ÿ“– TIL - PnP ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” React & TypeScript ํ™˜๊ฒฝ ์ด์Šˆ ํ•ด๊ฒฐํ•˜๊ธฐ

์Š˜ยท2025๋…„ 3์›” 7์ผ

๐Ÿ“– TIL

๋ชฉ๋ก ๋ณด๊ธฐ
70/90

์˜ค๋Š˜ ํˆฌ๋‘๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๋‹ค๊ฐ€ ๊ฐ‘์ž๊ธฐ ์•„๋ž˜ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚ฌ๋‹ค.
ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด์—ˆ๋Š”๋ฐ.. ์˜จํ†ต ๋นจ๊ฐ„์ค„ ์ฒœ์ง€์˜€๋‹ค..

JSX.IntrinsicElements' ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์—†์œผ๋ฏ€๋กœ JSX ์š”์†Œ๋Š” ์•”์‹œ์ ์œผ๋กœ 'any' ํ˜•์‹์ž…๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ณด๋‹ˆ yarn ๋ช…๋ น์–ด๋ฅผ ์ž˜๋ชป ์ž…๋ ฅํ•ด์„œ Yarn ๋ฒ„์ „์ด ์—…๊ทธ๋ ˆ์ด๋“œ๋˜๋ฉฐ PnP(Plug'n'Play) ๋ชจ๋“œ๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒƒ์ด ์›์ธ์ด์—ˆ๋‹ค.

๐Ÿค” ๋ฌธ์ œ ์›์ธ

Yarn์˜ ์ตœ์‹  ๋ฒ„์ „(Berry๋ผ๊ณ ๋„ ํ•จ)์€ PnP ๋ชจ๋“œ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ๋ชจ๋“œ๋Š” node_modules ํด๋”๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ธ๋ฐ, React์™€ TypeScript๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ํƒ€์ž… ์ •์˜๋ฅผ ์ œ๋Œ€๋กœ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
์•„๋งˆ๋„... yarn add๋ฅผ ํ•˜๋ ค๋‹ค๊ฐ€ yarn install๋กœ ์ž˜๋ชป ์ž…๋ ฅํ•œ๊ฒƒ์ด ํ™”๊ทผ์ธ๊ฒƒ ๊ฐ™๋‹ค.

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋“ค

1. ์ง์ ‘ ํƒ€์ž… ํŒจํ‚ค์ง€ ์„ค์น˜ํ•˜๊ธฐ

PnP ํ™˜๊ฒฝ์—์„œ๋Š” ์ผ๋ถ€ ํƒ€์ž… ํŒจํ‚ค์ง€๋ฅผ ์ง์ ‘ ์ถ”๊ฐ€ํ•ด์•ผ ์ •์ƒ์ ์œผ๋กœ ์ธ์‹๋œ๋‹ค:

yarn add -D @types/react @types/react-dom @types/node

์„ค์น˜ ํ›„ yarn dev ๋˜๋Š” npm run dev๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ๋Œ€๋ถ€๋ถ„ ํ•ด๊ฒฐ๋œ๋‹ค๋˜๋ฐ.. ์ด๊ฒƒ๋„ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•˜์˜€๋‹ค..

2. pnpify ์‚ฌ์šฉํ•˜๊ธฐ

PnP ํ™˜๊ฒฝ์—์„œ ํƒ€์ž…์„ ๋” ์ž˜ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ:

# pnpify ์„ค์น˜
yarn add -D @yarnpkg/pnpify

# VSCode์— PnP ์ž๋™ ์—ฐ๊ฒฐ
yarn dlx @yarnpkg/pnpify --sdk vscode

VSCode์—์„œ ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์˜€์ง€๋งŒ.. ์—ญ์‹œ๋‚˜ ๋˜์ง€ ์•Š์•˜๋‹ค...

3. node-modules ๋ชจ๋“œ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ (๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•)

.yarnrc.yml ํŒŒ์ผ์— ๋‹ค์Œ ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•„์š”ํ•œ ํƒ€์ž… ํŒจํ‚ค์ง€๋ฅผ ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค:

{
  "installConfig": {
    "nodeLinker": "node-modules"
  }
}

์„ค์ • ํ›„ yarn install ์‹คํ–‰ํ•˜๋‹ˆ, ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™์€ ํ•œ๋‹ค๋งŒ... ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ๋กœ ์„ค์น˜ ํ–ˆ์„๋•Œ๋„ ์ผ์ผํžˆ ํ•ด๋‹น ํŒŒ์ผ์„ ๋„ฃ์–ด์•ผํ•œ๋‹ค๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ์—ˆ๋‹ค.

4. ์ „์—ญ ์„ค์ • ์ œ๋Œ€๋กœ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

yarn config set nodeLinker node-modules

๐Ÿ‘‰ ์ด๊ฑฐ ์‹คํ–‰ํ•˜๋ฉด ~/.yarnrc.yml (Windows: C:\Users\์‚ฌ์šฉ์ž๋ช….yarnrc.yml)์— ์„ค์ •์ด ์ €์žฅ๋จ
๐Ÿ‘‰ ์ดํ›„ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ์ž๋™์œผ๋กœ node-modules ๋ฐฉ์‹์ด ์ ์šฉ๋ผ์„œ pnp ๊ด€๋ จ ์˜ค๋ฅ˜ ์•ˆ ๋œธ! ๐ŸŽ‰

๐Ÿš€ ๊ฒฐ๋ก 

๋‚˜๋Š” 4๋ฒˆ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค. ๋งค๋ฒˆ ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ํƒ€์ž… ๋ฌธ์ œ๋กœ ๊ณ ์ƒํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ต์ˆ™ํ•œ node-modules ๋ฐฉ์‹์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ํŽธํ–ˆ๋‹ค. ์ž์„ธํžˆ ์ฐพ์•„๋ณด๋‹ˆ PnP๊ฐ€ ์šฉ๋Ÿ‰๊ณผ ์†๋„ ๋ฉด์—์„œ ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์•„์ง React ์ƒํƒœ๊ณ„์™€ ์™„๋ฒฝํžˆ ํ˜ธํ™˜๋˜์ง€๋Š” ์•Š๋Š” ๊ฒƒ ๊ฐ™๋‹ค.. ์‹ค์ˆ˜๋กœ ์ž‘์„ฑํ•œ yarn install์ด์˜€์ง€๋งŒ.. pnp์— ๋Œ€ํ•ด์„œ ๊ฐ€๋ณ๊ฒŒ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ณ„๊ธฐ๊ฐ€ ๋˜์–ด์„œ ์˜คํžˆ๋ ค ์ข‹์•˜์„์ง€๋„..?

์•ž์œผ๋กœ๋Š” ํˆฌ๋‘ ๋ฆฌ์ŠคํŠธ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ํ™˜๊ฒฝ ์„ค์ •์— ์ฃผ์˜ํ•ด์•ผ๊ฒ ๋‹ค!

profile
์ฃผ๋‹ˆ์–ด ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ์žฅ๊ธฐ ๊ธฐ๋ก๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€