esbuild를 사용하여 React 18/TypeScript 번들 생성

esbuild은 웹팩, 롤업 또는 소포보다 10-100배 빠른 빠른 자바스크립트 번들러이며 ViteJS과 같은 도구에서 사용됩니다.

다음과 같은 기능을 지원합니다.
  • ES6 및 CommonJS 모듈
  • ES6 모듈의 트리 흔들림
  • JavaScript 및 Go용 API
  • TypeScript 및 JSX 구문
  • 소스 맵
  • 축소
  • 플러그인
  • 기타....

  • 이 게시물에서는 React 18/TypeScript 프로젝트용 번들을 생성하기 위한 빠르고 간단한 요약을 공유합니다.

    프로젝트에 esbuild 설치




    mkdir esbuild-demo
    cd esbuild-demo
    npm init -y
    npm install esbuild
    


    그러면 다음이 생성됩니다package.json.

    {
      "name": "esbuild-demo-story",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "dependencies": {
        "esbuild": "^0.14.48"
      }
    }
    


    React 18/TypeScript 프로젝트 생성



    이제 간단한 React 스크립트를 만듭니다.
  • 먼저 reactreact-dom를 프로젝트 종속성
  • 으로 설치합니다.
  • src/App.tsx 파일 생성
  • 동일한 파일에 AppPanel 구성 요소 추가
  • id가 Appdiv 요소에 root 구성 요소를 마운트합니다.

  • // src/App.tsx
    import * as React from 'react'
    import ReactDOM from 'react-dom/client';
    
    // App Component
    const App = () => (<div>
      <h1>Hello, ESBUILD!</h1>
      <Panel />
      <Panel />
    </div>)
    
    // Panel Component
    const Panel = () => <h2>I'm a Panel</h2>
    
    // Mount component 
    const root = ReactDOM.createRoot(
      document.getElementById('root')
    );
    root.render(<App />);
    
    


    에스빌드 구성


    esbuild 구성 파일을 생성하여 프로젝트를 컴파일합니다.
    React 및 ReactDom 라이브러리도 포함하는 dist 폴더에 (축소된) 번들을 생성합니다(external 속성을 사용하여 제외할 수 있습니다.

    // esbuild.config.js
    const res = require('esbuild').buildSync({
      entryPoints: ['src/app.tsx'],
      bundle: true,
      minify: true,
      format: 'cjs',
      sourcemap: true,
      outfile: 'dist/output.js',
      // external: ['react', 'react-dom'], 
    })
    


    노드를 사용하여 구성 파일을 실행합니다.

    node esbuild.config.js
    


    프로젝트 폴더:

    Index.html



    프로젝트 루트 폴더에 index.html를 만들고 번들을 가져옵니다.

    <html>
      <body>
      <script type="module" src="./dist/output.js"></script>
      <h1>React</h1>
    
      <div id="root"></div>
      </body>
    </html>
    


    웹서버를 실행합니다:

    npx lite-server
    



    그러면 다음과 같은 결과가 표시됩니다.

    간단한 React 18/TypeScript 프로젝트가 작동해야 합니다 :)


    SlideShare 프레젠테이션

    좋은 웹페이지 즐겨찾기