ํ”„๋กœ๊ทธ๋ž˜๋ฐ/React JS

[Vite] Code Splitting ์ „๋žต - ๋ฒˆ๋“ค ํฌ๊ธฐ ์ตœ์ ํ™”ํ•˜๊ธฐ(manualChunks)

์šฉ๋‡ฝ 2024. 12. 16. 22:37
๋ฐ˜์‘ํ˜•

[Vite] Code Splitting ์ „๋žต - ๋ฒˆ๋“ค ํฌ๊ธฐ ์ตœ์ ํ™”ํ•˜๊ธฐ(manualChunks)

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปค์งˆ์ˆ˜๋ก ๋ฒˆ๋“ค ํฌ๊ธฐ๋„ ํ•จ๊ป˜ ์ปค์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ๊ฐ„์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ฃ .

Vite์—์„œ ์ œ๊ณตํ•˜๋Š” Code Splitting ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ํ•ด๋‹น ๊ธ€์—์„œ๋Š” manualChunks์— ๋Œ€ํ•ด์„œ๋งŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

์™œ Code Splitting์ด ํ•„์š”ํ• ๊นŒ?

์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋นŒ๋“œํ•˜๋ฉด ๋ชจ๋“  Javascript ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ํฐ ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋ง ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด ์ƒํ™ฉ์€ ์•„๋ž˜ ๋ฌธ์ œ๋“ค์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธด ์ดˆ๊ธฐ ๋กœ๋”ฉ ์‹œ๊ฐ„: ์‚ฌ์šฉ์ž๊ฐ€ ์ฒซ ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ธฐ ์ „์— ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„: ๋‹น์žฅ ํ•„์š”ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
  • ๋น„ํšจ์œจ์ ์ธ ์บ์‹ฑ: ์ž‘์€ ์ฝ”๋“œ ๋ณ€๊ฒฝ์—๋„ ์ „์ฒด ๋ฒˆ๋“ค์„ ๋‹ค์‹œ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ฆ๊ฐ€: ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๊นŒ์ง€ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์ ์ ˆํžˆ ๋ถ„ํ• ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ

  • ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ์ฝ”๋“œ์™€ ๊ทธ๋ ‡์ง€ ์•Š์€ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌ
  • ํŠน์ • ํŽ˜์ด์ง€์—์„œ๋งŒ ํ•„์š”ํ•œ ์ฝ”๋“œ๋Š” ํ•ด๋‹น ํŽ˜์ด์ง€ ์ ‘์† ์‹œ์—๋งŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก.
  • ํฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์€ ๋ณ„๋„์˜ ์ฒญํฌ๋กœ ๋ถ„๋ฆฌ

๋“ฑ ํ”„๋กœ์ ํŠธ ์ƒํ™ฉ์— ๋งž๊ฒŒ ๊ธฐ์ค€์„ ์„ธ์šฐ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์™œ manualChunks๊ฐ€ ํ•„์š”ํ–ˆ๋Š”๊ฐ€?

์ด๋ฏธ ํ”„๋กœ์ ํŠธ์— lazy Loading, Dynamic Import ๊ธฐ๋ฒ• ๋“ฑ ํ•„์š”ํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์ ์šฉ๋œ ์ƒํƒœ์˜€์Šต๋‹ˆ๋‹ค๋งŒ..

manualChunks ์„ค์ • ์ ์šฉ ์ „ build ๊ฒฐ๊ณผ๋ฌผ

์œ„ ์ด๋ฏธ์ง€๋Š” build ๋œ ํŒŒ์ผ๋“ค์˜ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.

 

์ ค ํ•˜๋‹จ์˜ index.js๋ฅผ ๋ณด์‹œ๋ฉด ์šฉ๋Ÿ‰์ด 3MB ์ดˆ๊ณผํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ œ๊ฐ€ ๋‹ด๋‹นํ•œ ํ”„๋กœ์ ํŠธ ํŠน์„ฑ์ƒ ํ•œ ํŽ˜์ด์ง€์— ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•  ์ˆ˜๋ฐ–์— ์—†๋Š” ๊ตฌ์กฐ์ด๊ณ , ์ œ์ผ ๋งŽ์€ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ํŽ˜์ด์ง€์ด๊ธด ํ–ˆ์œผ๋‚˜,

๋ถˆํ•„์š”ํ•˜๊ฒŒ ์šฉ๋Ÿ‰์ด ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฌธ์ œ๋“ค์„ ๊ฒช๋Š” ์ƒํ™ฉ์„ ๋งž์ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

manualChunks๋ž€?

manualChunks๋Š” Vite(์‹ค์ œ๋กœ๋Š” Rollup)์—์„œ ์ œ๊ณตํ•˜๋Š” ์ฝ”๋“œ ๋ถ„ํ•  ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

๋นŒ๋“œ ์‹œ์ ์— ์–ด๋–ค ๋ชจ๋“ˆ๋“ค์„ ํ•˜๋‚˜์˜ ์ฒญํฌ๋กœ ๋ฌถ์„์ง€ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ์ฃ .

 

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด ๋ด…์‹œ๋‹ค.

  • React์™€ ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ
  • UI ์ปดํฌ๋„ŒํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๋˜ ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ
  • ์šฉ๋Ÿ‰์ด ํฌ๊ณ  ์ž˜ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ
  • ๋‚˜๋จธ์ง€ node_modules๊ฐ€ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด manualChunks๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๊ธฐ๋ณธ์ ์ธ ์„ค์ • ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

// vite.config.js
export default defineConfig({
  build: {
    rollupOptions: {
      output: {
       manualChunks(id) {
        if (id.includes('node_modules')) {
          return 'vendor';
        }
      }
    }
  }
})

ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์— ์œ„์™€ ๊ฐ™์ด ์„ค์ •์„ ํ•˜๊ณ  build๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ๊ฒฐ๊ณผ๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

node_modules๊ฐ€ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๋“ค์€ vender.js์— ๋ชจ๋‘ ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!


๊ธฐ์กด์— ์ œ์ผ ํฐ ์šฉ๋Ÿ‰์„ ์ฐจ์ง€ํ•˜๋˜ index.js์˜ ํฌ๊ธฐ๋Š” ์ด์ „ ๋ณด๋‹ค ์•ฝ 71%๊ฐ€ ๊ฐ์†Œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋–ผ์–ด๋‚ด์„œ index.js์˜ ์šฉ๋Ÿ‰ ์ž์ฒด๋Š” ๊ฐœ์„ ๋˜์—ˆ์œผ๋‚˜, ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ๋˜ ์žˆ์Šต๋‹ˆ๋‹ค.

node_modules๊ฐ€ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๋“ค์— ๋Œ€ํ•ด์„œ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฌถ์–ด ๋ฒ„๋ฆฌ๊ฒŒ ๋˜๋ฉด, ๋งŒ์•ฝ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•˜๋‚˜ ์ˆ˜์ •๋˜๊ณ  build๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด vendor.js๊ฐ€ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ํฐ ์šฉ๋Ÿ‰์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” vendor.js์— ๋Œ€ํ•ด์„œ ์ƒˆ๋กญ๊ฒŒ ๋‹ค์šด๋กœ๋“œ๋ฅผ ํ•˜๊ฒŒ ๋˜๊ฒ ์ฃ .

์ฆ‰, ์ž‘์€ ๋ณ€๊ฒฝ์—๋„ ํฐ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ฒŒ ๋˜๋Š” ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

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

๊ฐœ์„ ๋œ Code Splitting ์ „๋žต

๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ์กฐ๊ธˆ ๋” ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

๋” ์„ธ๋ฐ€ํ•œ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ chunks๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ๋‹จ์ˆœํžˆ node_modules๋งŒ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ๋ถ€ํ„ฐ๋Š” ํ”„๋กœ์ ํŠธ ํŠน์„ฑ์— ๋งž์ถฐ์„œ ๊ธฐ์ค€์„ ์ž˜ ์„ธ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ๊ทธ๋ž˜์„œ ์šฐ์„  vite-bundle-visualizer ๋ฅผ ์ด์šฉํ•˜์—ฌ ์šฉ๋Ÿ‰์ด ์ƒ๋Œ€์ ์œผ๋กœ ํฌ๊ณ  ์ž˜ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ถ€ํ„ฐ ๋ถ„๋ฆฌ๋ฅผ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. 

  • pdf ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • lottie ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

๊ฐ€ ์šฉ๋Ÿ‰์„ ํฌ๊ฒŒ ์ฐจ์ง€ํ•˜๋”๋ผ๊ณ ์š”.

๊ทธ๋ฆฌ๊ณ , ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋“ฑ์˜ ์ƒํ™ฉ์ด ๊ฑฐ์˜ ์ผ์–ด๋‚˜์ง€ ์•Š์•„์„œ ์šฐ์„  ์ ์šฉํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์„ค์ • ํ›„ build ๊ฒฐ๊ณผ๋ฌผ

๊ธฐ์กด ๋งค์šฐ ํฐ vendor์— ๋Œ€ํ•ด์„œ๋„ ์ฒญํฌ ๋ถ„ํ• ์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•ฝ 2MB ์ •๋„ ๊ฐ์†Œ๋˜์—ˆ๋„ค์š”.

 

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

 

์—ฌ๊ธฐ์„œ ์ถ”๊ฐ€๋กœ React ์˜์กด์„ฑ๋งŒ ๋ฌถ๋Š”๋‹ค๋˜์ง€, UI ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ๋ฌถ๋Š” ๋“ฑ์˜ ๊ธฐ์ค€์„ ์„ธ์šธ ์ˆ˜ ์žˆ๊ฒ ์ฃ ?

 

์ด ๋ฐฉ์‹์—๋„ ์ฃผ์˜ํ•  ์ ์ด ๋ช‡ ๊ฐ€์ง€ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ฒญํฌ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋ณ‘๋ ฌ HTTP ์š”์ฒญ๋„ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋„คํŠธ์›Œํฌ ์ƒํƒœ๊ฐ€ ์ข‹์ง€ ์•Š์€ ํ™˜๊ฒฝ์—์„œ๋Š” ์˜คํžˆ๋ ค ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์œ„์—์„œ ๋ง์”€๋“œ๋ฆฐ ๊ฒƒ์ฒ˜๋Ÿผ, ๊ธฐ์ค€์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์„ธ์šฐ๊ณ  ์ฒญํฌ ๊ตฌ์„ฑ์„ ์‹ ์ค‘ํ•˜๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

ํ•œ๋ฒˆ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณผ๊นŒ์š”?

์•„๋ž˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

manualChunks๋ฅผ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์„ ๋•Œ:

build/
  โ””โ”€โ”€ index.12345.js     # ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ํŒŒ์ผ (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ + ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ „์ฒด) (7,200kb | gzip: 2,100kb)

๋‹จ์ˆœํžˆ node_modules๋งŒ ๋ถ„๋ฆฌํ–ˆ์„ ๋•Œ:

build/
  โ”œโ”€โ”€ index.1234.js      # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ (920kb | gzip: 268kb)
  โ””โ”€โ”€ vendor.5678.js     # ๋ชจ๋“  node_modules ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (4,994kb | gzip: 1,448kb)

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณ„๋กœ ๋ถ„๋ฆฌํ–ˆ์„ ๋•Œ:

build/
  โ”œโ”€โ”€ index.1234.js       # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ (920kb | gzip: 268kb)
  โ”œโ”€โ”€ lottie-lib.abc.js   # lottie ๊ด€๋ จ (600kb | gzip: 150kb)
  โ”œโ”€โ”€ pdf-lib.def.js     # PDF ๊ด€๋ จ (1,000kb | gzip: 343kb)
  โ””โ”€โ”€ common-vendor.ghi.js  # ๊ธฐํƒ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (3,000kb | gzip: 1,000kb)
  โ””โ”€โ”€ ...  # ๊ธฐํƒ€ ํŒŒ์ผ

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ถ„๋ฆฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์ž‘์€ ์„ค์ • ๋ณ€๊ฒฝ์œผ๋กœ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ํฌ๊ฒŒ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์–ด์š”.

Code Splitting์€ ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋„๊ตฌ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ์˜ ํŠน์„ฑ์— ๋งž๊ฒŒ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•  ๋•Œ๋Š” ๋ฒˆ๋“ค ๋ถ„์„ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ตœ์ ์˜ ๋ถ„ํ•  ์ „๋žต์„ ์ฐพ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  manualChunks์—๋งŒ ์˜์กดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ ์ ˆํ•œ ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…์ด ์ ์šฉ ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋” ํฐ ํšจ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์ž‡์Šต๋‹ˆ๋‹ค.

manualChunks ํ•œ๋ฒˆ ์ ์šฉํ•ด ๋ณด์„ธ์š”!

๋ฐ˜์‘ํ˜•