250x250
반응형
arkhyeon
arkhyeon
arkhyeon
전체 방문자
오늘
어제
  • 분류 전체보기 (88)
    • Spring (5)
    • Java (4)
    • React (25)
      • TypeScript (6)
      • JavaScript (1)
      • Jest (9)
    • NEXT (8)
    • SQL (1)
    • React native (1)
    • CSS (3)
    • Web (1)
    • Git (3)
    • ETC (6)
    • 빅데이터DB (8)
    • Docker (4)
    • Tool (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • WSS
  • websocket server
  • react loading
  • kudu
  • react jest
  • javascript wss
  • react
  • usetransition
  • node WebSocket
  • react spring websocket
  • react usetransition
  • react websocket
  • HIVE
  • websocket
  • jest
  • docker tomcat
  • Spring WebSocket
  • javasciprt websocket
  • react19
  • react typescript

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
arkhyeon

arkhyeon

React

React 빌드 용량 최적화 - Vite rollupOptions manualChunks

2023. 9. 7. 16:29
728x90
반응형
하나로 빌드 되는 큰 파일을 작게 나누어 필요한 파일을 필요한 때 불러와 렌더링 속도 개선

1. manualChunks 

모든 코드를 미리 로드하는 대신 필요에 따라 작은 청크로 분할하는 기능으로 초기 로드 지연을 줄이고, 

사용자가 다운로드해야 하는 소스의 양을 줄일 수 있습니다.

청크 나누기 전
청크를 나눈 후

 

Configuration Options | Rollup

 

rollupjs.org

vite.config.ts

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  build: {
    rollupOptions: {
      output: {
        manualChunks: id => {
          if (id.includes('node_modules')) {
            const module = id.split('node_modules/').pop().split('/')[0];
            return `vendor/${module}`;
          }
        },
      },
    },
  },
});

1. manualChunks에 id가 함수에 전달됩니다.

C:/project/node_modules/lodash/_ListCache.js
C:/project/node_modules/lodash/_stackClear.js
C:/project/node_modules/lodash/_stackDelete.js
C:/project/node_modules/lodash/_stackGet.js
C:/project/node_modules/lodash/_stackHas.js
C:/project/node_modules/lodash/_stackSet.js

2. 문자열이 반환되면 모듈과 모든 해당 종속성이 지정된 이름의 수동 청크에 추가됩니다. 

예를 들어 다음은 node_modules 내부에 모든 종속성을 포함하는 청크를 생성합니다.
return `vendor/${module}` ==> dist/vendor/lodash-dc23debb.js

 

 

Dynamic Import / Lazy Loading - 코드 스플리팅[Code Splitting]

코드 스플리팅 코드를 다양한 번들로 분할하고, 요청에 따라 로드하여 사용자가 필요할 때에 필요한 코드만 사용할 수 있습니다. 더 작은 번들을 만들고 리소스 우선순위를 올바르게 제어하기

arkhyeon.tistory.com

 

728x90
반응형

'React' 카테고리의 다른 글

useEffect no dependency  (0) 2023.11.14
React Javascript WebSocket - Server 포함  (0) 2023.10.31
Dynamic Import / Lazy Loading - 코드 스플리팅[Code Splitting]  (0) 2023.09.07
Compound Component 패턴  (0) 2023.07.12
React createPortal(Modal Component)  (0) 2023.07.11
    'React' 카테고리의 다른 글
    • useEffect no dependency
    • React Javascript WebSocket - Server 포함
    • Dynamic Import / Lazy Loading - 코드 스플리팅[Code Splitting]
    • Compound Component 패턴
    arkhyeon
    arkhyeon

    티스토리툴바