JavaScript Module Bundler


자바스크립트 모듈 번들러

자바스크립트 모듈 번들러는 여러 개의 자바스크립트 파일과 관련된 리소스를 하나의 파일 또는 몇 개의 파일로 병합하여 배포할 수 있도록 하는 도구입니다. 이를 통해 웹 애플리케이션의 성능을 최적화하고, 관리와 유지보수를 쉽게 할 수 있습니다.

주요 모듈 번들러

  1. Webpack
  2. Rollup
  3. Parcel
  4. Browserify

각 모듈 번들러의 기능과 사용법을 상세히 살펴보겠습니다.

Webpack

특징

  • 모듈 의존성 그래프: Webpack은 애플리케이션의 의존성 그래프를 구축하고, 이 그래프를 통해 필요한 모듈들을 하나의 번들로 묶습니다.
  • 로더: 로더는 특정 유형의 파일을 처리하고 변환하는 역할을 합니다. 예를 들어, Babel 로더를 사용해 최신 자바스크립트 코드를 ES5로 변환할 수 있습니다.
  • 플러그인: 플러그인은 번들링 과정에 추가적인 기능을 제공하며, 파일 압축, 환경 변수 설정, HTML 파일 생성 등 다양한 작업을 수행할 수 있습니다.

설치 및 기본 사용법

  1. Webpack 설치:
   npm install --save-dev webpack webpack-cli
  1. Webpack 설정 파일 (webpack.config.js) 생성:
   const path = require('path');

   module.exports = {
       entry: './src/index.js', // 시작 파일
       output: {
           filename: 'bundle.js', // 출력 파일 이름
           path: path.resolve(__dirname, 'dist'), // 출력 경로
       },
       module: {
           rules: [
               {
                   test: /\.js$/, // .js 파일에 대해
                   exclude: /node_modules/, // node_modules 제외
                   use: {
                       loader: 'babel-loader', // Babel 로더 사용
                   },
               },
           ],
       },
   };
  1. 스크립트 설정 (package.json):
   {
       "scripts": {
           "build": "webpack"
       }
   }
  1. 빌드 명령 실행:
   npm run build

Rollup

특징

  • ES 모듈 지원: Rollup은 ES6 모듈을 기본적으로 지원하며, 이를 최적화하여 번들링합니다.
  • 트리 셰이킹(Tree-shaking): 사용되지 않는 코드를 제거하여 번들 크기를 줄입니다.
  • 플러그인 시스템: 다양한 플러그인을 통해 확장할 수 있습니다.

설치 및 기본 사용법

  1. Rollup 설치:
   npm install --save-dev rollup
  1. Rollup 설정 파일 (rollup.config.js) 생성:
   import babel from 'rollup-plugin-babel';

   export default {
       input: 'src/index.js', // 시작 파일
       output: {
           file: 'dist/bundle.js', // 출력 파일
           format: 'iife', // 즉시 실행 함수 표현식
       },
       plugins: [
           babel({
               exclude: 'node_modules/**', // node_modules 제외
           }),
       ],
   };
  1. 스크립트 설정 (package.json):
   {
       "scripts": {
           "build": "rollup -c"
       }
   }
  1. 빌드 명령 실행:
   npm run build

Parcel

특징

  • 설정 필요 없음: Parcel은 기본적으로 설정 파일 없이도 작동합니다.
  • 빠른 빌드 속도: 멀티 코어 처리 및 파일 시스템 캐싱을 통해 빠른 빌드를 제공합니다.
  • 자동 번들링: 의존성을 자동으로 감지하고 번들링합니다.

설치 및 기본 사용법

  1. Parcel 설치:
   npm install --save-dev parcel
  1. 프로젝트 구조:
   ├── src
   │   └── index.js
   └── index.html
  1. HTML 파일에서 스크립트 태그 추가 (index.html):
   <!DOCTYPE html>
   <html lang="en">
   <head>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
       <title>Parcel Example</title>
   </head>
   <body>
       <script src="src/index.js"></script>
   </body>
   </html>
  1. 개발 서버 시작:
   npx parcel index.html
  1. 빌드 명령 실행:
   npx parcel build index.html

Browserify

특징

  • CommonJS 모듈: Node.js 스타일의 CommonJS 모듈을 브라우저에서도 사용할 수 있게 합니다.
  • 플러그인 및 변환기: 다양한 플러그인과 변환기를 통해 기능을 확장할 수 있습니다.

설치 및 기본 사용법

  1. Browserify 설치:
   npm install --save-dev browserify
  1. 프로젝트 구조:
   ├── src
   │   └── index.js
   └── dist
  1. 스크립트 설정 (package.json):
   {
       "scripts": {
           "build": "browserify src/index.js -o dist/bundle.js"
       }
   }
  1. 빌드 명령 실행:
   npm run build

결론

자바스크립트 모듈 번들러는 개발자가 여러 파일로 분리된 코드를 효과적으로 관리하고 배포할 수 있도록 도와줍니다. 각 번들러는 고유의 장점과 사용 사례를 가지고 있으며, 프로젝트의 요구 사항에 맞게 선택할 수 있습니다. Webpack은 복잡한 애플리케이션에 적합하고, Rollup은 라이브러리 번들링에 유리하며, Parcel은 설정 없이 빠른 개발 환경을 제공합니다. Browserify는 Node.js 스타일의 모듈을 브라우저에서 사용할 수 있게 해줍니다.


Leave a Reply

Your email address will not be published. Required fields are marked *