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

์›น ๊ฐœ๋ฐœ/Frontend

Frontend Tool) Vite(๋น„ํŠธ)๋ž€ ๋ฌด์—‡์ธ๊ฐ€

๐Ÿ”น vite (veet) : ํ”„๋ž‘์Šค์–ด๋กœ “๋น ๋ฅด๋‹ค”
๐Ÿ”น vue๋ฅผ ๊ฐœ๋ฐœํ•œ Evan You
๐Ÿ”น ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ ์ง€์› (Vue, React, TypeScript, VanilaJS ๋“ฑ)
๐Ÿ”น ์‹ค์ œ ํ”„๋กœ๋•์…˜ ์ œํ’ˆ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” ํˆด

https://vitejs.dev/

 

1. ๋ฐฐ๊ฒฝ์ง€์‹

vite์˜ ๋™์ž‘๋ฐฉ์‹๊ณผ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์ „์— ํ•„์š”ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹๋“ค์„ ๊ณต๋ถ€ํ•˜๊ณ  ์ •๋ฆฌํ–ˆ๋‹ค. 

  • ๋ฒˆ๋“ค๋ง
    • ์ปดํฌ๋„ŒํŠธ๋กœ ๋ชจ๋“ˆํ™”๋œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฌถ์–ด ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์ž‘์—…
    • ๋Œ€ํ‘œ์ ์ธ ๋ฒˆ๋“ค๋ง ํˆด: webpack, rollup, parcel
  • HMR(Hot Module Replacement)
    • ์•ฑ์„ ์ข…๋ฃŒํ•˜์ง€ ์•Š๊ณ  ๊ฐฑ์‹ ๋œ ํŒŒ์ผ๋งŒ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ์‹
    • ์ฝ”๋“œ์— ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ชจ๋“  ํŒŒ์ผ์„ ๋‹ค์‹œ ๋ฒˆ๋“ค๋งํ•˜์ง€ ๋ง๊ณ  ๊ฐฑ์‹ ๋œ ํŒŒ์ผ๋งŒ ๊ต์ฒดํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœํ•œ๋‹ค.
  • webpack
    • create-react-app(CRA)์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฒˆ๋“ค๋ง ํˆด
    • ํŠน์ง•
      • ์ „์ฒด ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฌถ๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ์ฝ”๋“œ์–‘์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ๋ฒˆ๋“ค๋ง์ด ์˜ค๋ž˜๊ฑธ๋ ค ์ดˆ๊ธฐ ๊ตฌ๋™ ์‹œ๊ฐ„์ด ๋Š๋ ค์ง„๋‹ค.
      • ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ๋ฒˆ๋“ค๋ง ๋˜์–ด์•ผ ์„œ๋ฒ„๊ฐ€ ์ค€๋น„๋œ๋‹ค. ๊ทธ๋ž˜์„œ ์†Œ์Šค ์ฝ”๋“œ์— ์•„์ฃผ ์‚ฌ์†Œํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด๋ผ๋„ ๋ฐœ์ƒํ•˜๋ฉด ๋ฒˆ๋“ค๋ง์„ ๋‹ค์‹œ ํ•ด์•ผ ํ•œ๋‹ค. 
      • HMR(Hot Module Replacement)๋ฅผ ์ง€์›ํ•˜์ง€๋งŒ ์•ฑ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๊ฐฑ์‹  ์‹œ๊ฐ„์ด ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฌธ์ œ๋Š” ์—ฌ์ „ํ•˜๋‹ค

 

  • esbuild
    • ์•„์ฃผ ๋น ๋ฅธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค๋Ÿฌ
    • go์–ธ์–ด๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค.
    • ์ฝ”๋“œ ํŒŒ์‹ฑ, ์ถœ๋ ฅ, ์†Œ์Šค๋งต ์ƒ์„ฑ์„ ๋ชจ๋‘ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ๋ณ€ํ™˜ ๋ฐ ํ• ๋‹น์ด ์—†๋‹ค. 
  • javascript modules
    • 1๊ฐœ ์ด์ƒ์˜ ๊ฐ์ฒด/ํ•จ์ˆ˜/๋ณ€์ˆ˜ ๋“ฑ์„ exportํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋ชจ๋“ˆ์ด๋ผ๊ณ  ํ•œ๋‹ค. 
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง์— ๋”ฐ๋ผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ„๋„์˜ ๋ชจ๋“ˆ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๋งค์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ•ด์ง์— ๋”ฐ๋ผ ๋“ฑ์žฅํ•œ ๊ฐœ๋…์ด๋‹ค.
    • ๊ธฐ๋Šฅ๊ณผ ๊ด€์‹ฌ์‚ฌ์— ๋”ฐ๋ผ ๋ชจ๋“ˆ์„ ํ†ตํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ถ„๋ฆฌ๊ฐ€ ๋ชฉ์ !
    • ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋“ค์€ ์ด์ œ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“ˆ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค.
  • ESM (ECMAScript Module)
    • ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์‚ฌ์–‘์œผ๋กœ ๋ชจ๋“ˆ import, export๋ฅผ ๋ณ„๋„์˜ ๋„๊ตฌ ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋™์ž‘์›๋ฆฌ
      • ๋”๋ณด๊ธฐ
        1. ๊ตฌ์„ฑ construction (fetch → parse)
          1. module resolution: ์ตœ์ดˆ ์‹คํ–‰ ํŒŒ์ผ (์—”ํŠธ๋ฆฌ ํŒŒ์ผ)์„ ๊ธฐ์ค€์œผ๋กœ import๋ฅผ ํƒ€๊ณ  ์˜ฌ๋ผ๊ฐ€ ์ข…์†์„ฑ ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ด์„œ ํ•„์š”ํ•œ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ธ๋‹ค.
          2. fetch: ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค.
          3. parse: ํŒŒ์ผ์„ ํŒŒ์‹ฑํ•˜์—ฌ ๋ชจ๋“ˆ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
          • ๋ชจ๋“ˆ ๋ ˆ์ฝ”๋“œ : import์™€ export ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
        2. ์ธ์Šคํ„ด์Šคํ™” instantiation
          • ๋ชจ๋“ˆ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์ด๋‹ค.
          • export๋œ ๋ชจ๋“  ๊ฐ’๋“ค์„ ์ €์žฅํ•  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•œ๋‹ค.
          • import์™€ export ๋ชจ๋‘ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ€์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค ==linking
        3. ํ‰๊ฐ€ evaluation
          • ์ €์žฅํ•  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค.
          • ์ด๋•Œ Import๋กœ ์ ‘๊ทผํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ๊ฐ’์€ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. read-only

 

2. Vite

 

Vite๊ฐ€ ๋น ๋ฅธ ์ด์œ  

  • esbuild๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ์ด๊ฒŒ ์•„์ฃผ ๋น ๋ฅด๋‹ค.
  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“ˆ์„ ๋‘๊ฐ€์ง€ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋‚˜๋ˆˆ๋‹ค.
    • dependencies : ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ”Œ๋ ˆ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค ์ฝ”๋“œ
    • source code : JSX, CSS ๋“ฑ์ด ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•˜์˜€์œผ๋ฉฐ ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ ๊ณ„์† ํŽธ์ง‘๋˜๋Š” ์˜์—ญ
  • Dependencies๋“ค์€ ์—„์ฒญ ํฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ผ ๊ฒฝ์šฐ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ฒˆ๋“ค๋งํ•˜๋Š” ๊ณผ์ •์ด ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๊ณ  ๋งŽ์ด ์‹œ๊ฐ„์ด ๋“ ๋‹ค.

 

๋™์ž‘ ๋ฐฉ์‹

  • HTTP request์— ๋”ฐ๋ผ์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ณ  ์ „๋‹ฌํ•œ๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €์˜ ํ˜„์žฌ ํ™”๋ฉด์— ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋“ค๋งŒ ์ฒ˜๋ฆฌ๋œ๋‹ค.
  • ์–ด๋–ค ๋ชจ๋“ˆ์ด ์ˆ˜์ •๋˜๋ฉด ์ˆ˜์ •๋œ ๋ชจ๋“ˆ๊ณผ ๊ด€๋ จ๋œ ๋ถ€๋ถ„๋งŒ ๊ต์ฒดํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์š”์ฒญํ•˜๋ฉด ๊ต์ฒด๋œ ๋ชจ๋“ˆ์„ ์ „๋‹ฌํ•˜๊ธฐ๋งŒ ํ•œ๋‹ค.
  • ESM์„ ์ด์šฉํ•ด์„œ HMR์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฑ ๊ทœ๋ชจ๊ฐ€ ๊ฐฑ์‹  ์‹œ๊ฐ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.
  • HTTP ํ—ค๋”๋ฅผ ์ด์šฉํ•œ๋‹ค.
    • ํ•„์š”์— ๋”ฐ๋ผ 304 Not Modified, Cache-Control: max-age=31536000, immutable์„ ์ด์šฉํ•ด์„œ ์บ์‹œ๋˜๋„๋ก ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•œ๋ฒˆ์ด๋ผ๋„ ์š”์ฒญ์„ ๋œ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

 

๊ธฐ๋Šฅ

  • ESM์œผ๋กœ ์‚ฌ์ „ ๋ฒˆ๋“ค๋ง์„ ์ˆ˜ํ–‰ํ•˜๊ณ , HTTP ํ—ค๋”๋ฅผ ์ด์šฉํ•ด ์š”์ฒญํ•œ ๋””ํŽœ๋˜์‹œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์บ์‹ฑํ•˜๋„๋ก ํ•œ๋‹ค.
  • ESM์„ ํ†ตํ•ด HMR API๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ ์šฉ์ด ์•„์ฃผ ๋น ๋ฅด๋‹ค.
  • TypeScript, Vue, JSX, CSS, CSS Pre-processor, ์ •์  ์ž์›, JSON, WebAssembly, Web Worker๋ฅผ import ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Typescript ์ฐธ๊ณ  ์‚ฌํ•ญ
      • ๋”๋ณด๊ธฐ
        ํƒ€์ž… ์ „์šฉ Import, Export๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ์ •ํ™•ํ•˜๊ฒŒ ๋ฒˆ๋“ค๋งํ•  ์ˆ˜ ์žˆ๋‹ค
        import type { T } from 'only/types' export type { T }
        tsconfig.json > compilerOptions > isolatedModules : true ์„ค์ • ํ•„์š”
  • import.meta.glob๋ฅผ ์ด์šฉํ•ด์„œ ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์„ ํ•œ๋ฒˆ์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
  • importํ•˜๋Š” ํŒŒ์ผ๋ช…์— ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋นŒ๋“œ ์ตœ์ ํ™”

  • CSS ์ฝ”๋“œ๋ฅผ ์ถ”์ถœํ•ด์„œ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ <link> ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด์„œ CSS ์ฝ”๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ๋ชจ๋‘ ๊ณ„์‚ฐํ•œ ์ดํ›„์— ๋ Œ๋”ํ•˜๋„๋ก ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด FOUC ํ˜„์ƒ์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.
    • FOUC ํ˜„์ƒ : CSS ๊ณ„์‚ฐ ์ „์— ์Šคํƒ€์ผ์ด ์ ์šฉ๋˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๊ฐ€ ์ž ๊น ๋œจ๋Š” ํ˜„์ƒ
    • build.cssCodeSplit: false ๋กœ ๋น„ํ™œ์„ฑํ™”
  • Preload directives generation
    • <link rel="modulepreload">
    • ๋ชจ๋“ˆ์„ ๋ฏธ๋ฆฌ ์บ์‹ฑํ•˜๋„๋ก ์ž๋™ ๋ณ€ํ™˜ → ํ•„์š”์‹œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • depth๊ฐ€ ๊นŠ์€ ํŒŒ์ผ๋“ค์„ ๋กœ๋“œํ•˜๋Š”๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์ด์šฉํ•ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Async Chunk Loading Optimization
    • ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ฒญํฌ์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ณตํ†ต ์ฒญํฌ๋Š” ๋ณ‘๋ ฌ์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก dynamic import ๊ตฌ๋ฌธ์œผ๋กœ ์žฌ์ž‘์„ฑํ•œ๋‹ค.
    • ์ด๋Ÿฌํ•œ direct ๊ตฌ๋ฌธ์€ preloadํ•˜์—ฌ ์“ธ๋ฐ ์—†๋Š” ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ์ค„์ธ๋‹ค.

์ž์› ๊ฐ€์ ธ์˜ค๊ธฐ

  • URL๋กœ ์ด๋ฏธ์ง€, ๋ฏธ๋””์–ด, ํฐํŠธ ํŒŒ์ผ ๋“ฑ์„ ๊ฐ€์ ธ์˜ค๊ณ , assetInclude ์˜ต์…˜์„ ์ด์šฉํ•ด ํŠน์ • ํŒŒ์ผ ํƒ€์ž…์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • public ๋””๋ ‰ํ„ฐ๋ฆฌ
    • robot.txt์™€ ๊ฐ™์ด ์†Œ์Šค ์ฝ”๋“œ์—์„œ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฒƒ , ํ•ด์‹ฑ ์—†์ด ํ•ญ์ƒ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ–๋Š” ์—์…‹, importํ•  ํ•„์š” ์—†๋Š” ์—์…‹์„ ์—ฌ๊ธฐ์„ธ ํฌํ•จ์‹œํ‚จ๋‹ค.
  • import.meta.url : ํ˜„์žฌ ๋ชจ๋“ˆ์˜ URL์„ ์•Œ๋ ค์ฃผ๋Š” ESM api
const imgUrl = new URL('./img.png', import.meta.url).href
// ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

ํ™˜๊ฒฝ ๋ณ€์ˆ˜

  • import.meta.env ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
    • MODE: string - ํ˜„์žฌ ์•ฑ์ด ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“œ
    • BASE_URL: string - ์•ฑ์ด ์ œ๊ณต๋˜๋Š” ๋ฒ ์ด์Šค URL
    • PROD/DEV/SSR: boolean - ์•ฑ ์‹คํ–‰ ํ™˜๊ฒฝ ํ™•์ธ (PROD ↔ DEV)
  • ํ”„๋กœ๋•์…˜์—์„œ๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ๋ชจ๋‘ ์ •์ ์œผ๋กœ ๊ต์ฒด๋œ๋‹ค.
  • .env ํŒŒ์ผ๋“ค
.env                # ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋  ํ™˜๊ฒฝ ๋ณ€์ˆ˜
.env.local          # ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋˜๋‚˜, ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋งŒ ์‚ฌ์šฉ๋ (Git์— ์˜ํ•ด ๋ฌด์‹œ๋ ) ํ™˜๊ฒฝ ๋ณ€์ˆ˜
.env.[mode]         # ํŠน์ • ๋ชจ๋“œ์—์„œ๋งŒ ์‚ฌ์šฉ๋  ํ™˜๊ฒฝ ๋ณ€์ˆ˜
.env.[mode].local   # ํŠน์ • ๋ชจ๋“œ์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋‚˜, ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ๋งŒ ์‚ฌ์šฉ๋ (Git์— ์˜ํ•ด ๋ฌด์‹œ๋ ) ํ™˜๊ฒฝ ๋ณ€์ˆ˜

 

CRA vs Vite

์ง์ ‘ ๋‘ ๋ฒˆ๋“ค๋Ÿฌ๋ฅผ ๋น„๊ตํ•ด๋ณด์•˜๋‹ค. 

 

  ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๊ตฌ๋™ ์‹œ๊ฐ„ ๋นŒ๋“œ ์‹œ๊ฐ„
CRA 12s 16.66s
vite 298ms 9.11s

 

 

๊ฒฐ๋ก 

๊ฐœ๋ฐœ ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•ด vite๋ฅผ ์จ์•ผ๋œ๋‹ค!