๋ฐ˜์‘ํ˜•

๐Ÿ€ 1. ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

  • yarn ์„ค์น˜
npm install -g yarn
  • Create React App ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
yarn create react-app wedding --template typescript

๐Ÿ€ 2. Yarn Berry(PnP) ์„ค์ •

  1. node_modules ํด๋” ์‚ญ์ œ
  2. berry ๋ฒ„์ „ ์„ค์ • ::  yarn set version berry
    yarn set version berry
  3. root ๊ฒฝ๋กœ์— .yarnrc.ymlํŒŒ์ผ ์ƒ์„ฑ
    //.yarnrc.yml ํŒŒ์ผ์— pnp ์„ค์ •ํ•˜๊ธฐ (node_modules ๋Œ€์‹  pnp๋ฐฉ์‹ ์‚ฌ์šฉ!)
    nodeLinker: pnp
    
  4. yarn install
    yarn install
    

ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ZipFS ์„ค์น˜


Yarn Berry์—์„œ TypeScript๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ zipfs ํ™•์žฅ ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” Yarn์˜ Plug'n'Play(PnP) ๋ฐฉ์‹ ๋•Œ๋ฌธ์ด๋‹ค. Yarn Berry๋Š” node_modules ํด๋” ์—†์ด .zip ํŒŒ์ผ์„ ํ†ตํ•ด ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ, ์ด๋•Œ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ .zip ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ณผ์ •์—์„œ zipfs๊ฐ€ ํ•„์š”ํ•˜๋‹ค.๋”ฐ๋ผ์„œ zipfs๋ฅผ ์„ค์น˜ํ•˜๋ฉด, Yarn Berry์˜ PnP ๋ฐฉ์‹๊ณผ TypeScript ํ™˜๊ฒฝ ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค. zipfs ํ™•์žฅ ๊ธฐ๋Šฅ์€ .zip ํŒŒ์ผ๋กœ ์ €์žฅ๋œ ํŒจํ‚ค์ง€๋“ค์„ ํŒŒ์ผ ์‹œ์Šคํ…œ์ฒ˜๋Ÿผ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜์—ฌ, PnP ํ™˜๊ฒฝ์—์„œ TypeScript๋‚˜ ๊ธฐํƒ€ ํˆด์ด ์ •์ƒ์ ์œผ๋กœ ํŒจํ‚ค์ง€ ํŒŒ์ผ์„ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

 

6. Yarn Berry์˜ Plug'n'Play(PnP) ๋ฐฉ์‹๊ณผ VSCode์˜ ํ†ตํ•ฉ ์„ค์ •

yarn dlx @yarnpkg/sdks vscode
๐Ÿ”ฅ๐Ÿ‘ฟ ์ฃผ์˜!!
๋ช…๋ น ํŒ”๋ ˆํŠธ(Ctrl+Shift+P)๋ฅผ ์—ด๊ณ  TypeScript: Restart TS Server"๋ฅผ ์„ ํƒ → "Use Workspace Version”๋ถ€๋ชจ ํด๋”๊ฐ€ ์•„๋‹Œ ํ”„๋กœ์ ํŠธ ํด๋” ์ž์ฒด์—์„œ VSCode๋ฅผ ์—ด์–ด์•ผ ํ•œ๋‹ค!!!! vscode๊ฐ€ ๋ถ€๋ชจํด๋”๋กœ ์—ด๋ ค์žˆ๋‹ค๋ฉด Use Workspace Version๊ฐ€ ๋ณด์ด์ง€ ์•Š์Œ...
์ฐธ๊ณ :: https://github.com/yarnpkg/berry/issues/4788

๐Ÿ€ 3. typescript ์„ค์ •

์›Œํฌ์ŠคํŽ˜์ด์Šค ๋ฒ„์ „์— ๋งž๋Š” ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ—ˆ์šฉํ•ด์ฃผ๊ธฐ

๐Ÿ€ 4. .gitignore์— ์ถ”๊ฐ€

# yarn zero install
.yarn/*
!.yarn/cache
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

# ์ฐธ๊ณ ::  https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored

 

Questions & Answers | Yarn

A list of answers to commonly asked questions.

yarnpkg.com

 

๐Ÿ€ 5. App.test.tsx์˜ ํƒ€์ž…์—๋Ÿฌ ์ œ๊ฑฐํ•˜๊ธฐ

ํƒ€์ž…์—๋Ÿฌ ์™•์ฐฝ

yarn remove @testing-library/jest-dom
yarn add -D @types/testing-library__jest-dom @testing-library/jest-dom

๐Ÿ€ 6. yarn start!!!!!!!!!!!!!!!!!!!!!!!

yarn start

 

๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•

React์™€ Vite ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘์„ ์œ„ํ•œ ์…‹ํŒ…ํ•˜๊ธฐ

 

1.  React + Vite ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

npm create vite@latest ํ”„๋กœ์ ํŠธ๋ช… --template react


* * React + Typescript + Vite ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

npm create vite@latest ํ”„๋กœ์ ํŠธ๋ช… --template react-ts

 

2. ํ”„๋กœ์ ํŠธ ํด๋”๋กœ ์ด๋™

 
cd ํ”„๋กœ์ ํŠธ๋ช…

 

3. ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜

npm install

 

4. ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰

npm run dev

 

 

๐ŸŽˆ Vite๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ 

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

  1. ๋น ๋ฅธ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹œ์ž‘: Vite๋Š” ๋ชจ๋“ˆ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•„์š”ํ•œ ํŒŒ์ผ๋งŒ ๋กœ๋”ฉํ•˜๋ฏ€๋กœ, ๊ฐœ๋ฐœ ์„œ๋ฒ„๊ฐ€ ์ฆ‰์‹œ ์‹œ์ž‘๋œ๋‹ค. ํŠนํžˆ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ด๋Ÿฌํ•œ ๋น ๋ฅธ ๋กœ๋”ฉ ์†๋„๋Š” ํฐ ์ฐจ์ด๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ฐœ๋ฐœ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ๋น ๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ํ–ฅ์ƒ๋œ๋‹ค.
  2. ํšจ์œจ์ ์ธ Hot Module Replacement (HMR): Vite๋Š” ๋ณ€๊ฒฝ๋œ ๋ชจ๋“ˆ๋งŒ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ์‹์˜ HMR์„ ์ง€์›ํ•˜์—ฌ, ์ฝ”๋“œ ์ˆ˜์ • ํ›„ ์ฆ‰๊ฐ์ ์œผ๋กœ ํ™”๋ฉด์— ๋ฐ˜์˜๋œ๋‹ค. ์ด๋กœ ์ธํ•ด ์ฝ”๋“œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•˜๋ฉฐ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์–ด ์ž‘์—… ํšจ์œจ์„ฑ์ด ๋†’์•„์ง„๋‹ค.
  3. ์ตœ์ ํ™”๋œ ๋นŒ๋“œ: Vite๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ๋นŒ๋“œ ํ™˜๊ฒฝ์„ ๊ฐ๊ฐ ์ตœ์ ํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐœ๋ฐœ ์ค‘์—๋Š” ESM(ES ๋ชจ๋“ˆ)์„ ์‚ฌ์šฉํ•˜๊ณ , ์ตœ์ข… ๋นŒ๋“œ ์‹œ์—๋Š” Rollup์„ ํ†ตํ•ด ๋ฒˆ๋“ค๋ง์„ ์ตœ์ ํ™”ํ•˜์—ฌ ์„ฑ๋Šฅ ์ข‹์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  4. ์„ค์ •์˜ ๊ฐ„๋‹จํ•จ๊ณผ ์œ ์—ฐ์„ฑ: Vite๋Š” ์„ค์ •์ด ๊ฐ„๋‹จํ•ด ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค. vite.config.js๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ์„ค์ •์„ ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, React์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ์™€๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ†ตํ•ฉ๋˜์–ด ์ถ”๊ฐ€ ์„ค์ • ์—†์ด๋„ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ธฐ ์šฉ์ดํ•˜๋‹ค.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ Vite๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ง€์›ํ•˜๋ฉฐ, ์ดˆ๊ธฐ ๋กœ๋”ฉ๋ถ€ํ„ฐ ๋นŒ๋“œ๊นŒ์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ์„ฑ๋Šฅ๊ณผ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค. Vite๋ฅผ ํ†ตํ•ด ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๊ณ  ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ฃผ์š” ๋ชฉ์ ์ด์—ˆ๋‹ค.

 

 

๐ŸŽˆ ๊ธฐํƒ€ ๋‹ค๋ฅธ ๋ฒˆ๋“ค๋Ÿฌ ๋„๊ตฌ๋“ค

  1. Webpack:
    • ์„ค๋ช…: JavaScript ์ƒํƒœ๊ณ„์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฒˆ๋“ค๋Ÿฌ๋กœ, ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์„ค์ • ์˜ต์…˜์„ ์ œ๊ณตํ•ด ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ์šฉ์ดํ•˜๋‹ค.
    • ์žฅ์ : ๋ฐฉ๋Œ€ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ๊ณ„, ๋†’์€ ํ˜ธํ™˜์„ฑ, ์œ ์—ฐํ•œ ์„ค์ •. ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•˜๋‹ค.
    • ๋‹จ์ : ์„ค์ •์ด ๋ณต์žกํ•˜๊ณ , ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋ฉฐ, HMR ์†๋„๊ฐ€ Vite๋ณด๋‹ค ๋‹ค์†Œ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค.
    • ์ถ”์ฒœ ์ƒํ™ฉ: ์ปค์Šคํ…€ ์„ค์ •์ด ๋ณต์žกํ•˜๊ฒŒ ํ•„์š”ํ•œ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์— ์œ ๋ฆฌํ•˜๋‹ค.
  2. Parcel:
    • ์„ค๋ช…: Parcel์€ ์„ค์ •์ด ๊ฑฐ์˜ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฒˆ๋“ค๋Ÿฌ๋กœ, ‘์ œ๋กœ ์„ค์ •’์„ ๊ฐ•์กฐํ•˜๋ฉฐ ์ž๋™ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
    • ์žฅ์ : ์ดˆ๋ณด์ž๋„ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋น ๋ฅธ ๋นŒ๋“œ ๋ฐ HMR์„ ์ง€์›ํ•ด ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ธ๋‹ค.
    • ๋‹จ์ : ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ์„ค์ • ๋ฉด์—์„œ๋Š” Webpack์ด๋‚˜ Vite์— ๋น„ํ•ด ํ•œ๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
    • ์ถ”์ฒœ ์ƒํ™ฉ: ์„ค์ • ์—†์ด ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•œ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•˜๋‹ค.
  3. Snowpack:
    • ์„ค๋ช…: Snowpack์€ Vite์™€ ์œ ์‚ฌํ•˜๊ฒŒ ESM์„ ํ™œ์šฉํ•ด ํ•„์š”ํ•œ ๋ชจ๋“ˆ๋งŒ ๋กœ๋“œํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ธ๋‹ค.
    • ์žฅ์ : ๋น ๋ฅธ ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹œ์ž‘ ๋ฐ HMR, ๋ชจ๋“ˆ ์บ์‹ฑ ๊ธฐ๋Šฅ์ด ๋›ฐ์–ด๋‚˜๋‹ค. Vite์™€ ๋น„์Šทํ•œ ๋ชจ๋“ˆ ๊ธฐ๋ฐ˜ ๋ฐฉ์‹์ด๋ผ ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
    • ๋‹จ์ : ์ตœ๊ทผ ์—…๋ฐ์ดํŠธ ๋นˆ๋„๊ฐ€ ์ค„์–ด๋“ค๋ฉด์„œ Vite๋งŒํผ ํ™œ๋ฐœํžˆ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ํŽธ์ด๋‹ค.
    • ์ถ”์ฒœ ์ƒํ™ฉ: Vite์˜ ๋Œ€์ฒด๋กœ ๊ณ ๋ คํ•  ๋งŒํ•˜์ง€๋งŒ, ์ƒํƒœ๊ณ„์™€ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ™œ๋ฐœํ•œ ์ตœ์‹  ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Vite๊ฐ€ ๋” ๋‚˜์€ ์„ ํƒ์ผ ์ˆ˜ ์žˆ๋‹ค.
  4. esbuild:
    • ์„ค๋ช…: esbuild๋Š” ์ดˆ๊ณ ์† JavaScript ๋ฒˆ๋“ค๋Ÿฌ๋กœ, Go ์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์–ด ๋งค์šฐ ๋น ๋ฅธ ๋นŒ๋“œ ์†๋„๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
    • ์žฅ์ : ๋นŒ๋“œ ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๋ฉฐ, ๋งŽ์€ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฏธ๋“ค์›จ์–ด๋‚˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.
    • ๋‹จ์ : ๊ธฐ๋Šฅ์ด ๊ธฐ๋ณธ์ ์ธ ๋ฒˆ๋“ค๋ง์— ์ง‘์ค‘๋˜์–ด ์žˆ์–ด, ๋ณต์žกํ•œ ์„ค์ •์„ ๋‹ค๋ฃจ๊ธฐ์—๋Š” ๋‹ค์†Œ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.
    • ์ถ”์ฒœ ์ƒํ™ฉ: ๋นŒ๋“œ ์†๋„๊ฐ€ ๋งค์šฐ ์ค‘์š”ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ, ๋ฒˆ๋“ค๋ง ๋ฐ ํŠธ๋žœ์ŠคํŒŒ์ผ๋ง๋งŒ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค.

์ด์™ธ์—๋„ ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ๊ณผ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ Rollup๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•

+ Recent posts