React 번들링/ webpack

라형선·2023년 9월 2일
0

번들링(Bundle)은

웹 개발에서 여러 개의 파일과 모듈을 하나의 파일로 묶는 과정을 가리킵니다. 주로 JavaScript, CSS, 이미지, 폰트 등과 같은 웹 애플리케이션의 자원들을 번들로 묶어 하나의 파일로 제공하는데 사용됩니다.

파일 관리와 모듈화

  1. 파일 관리: 웹 애플리케이션을 개발하면서 여러 개의 JavaScript 파일, CSS 파일, 이미지, 폰트 등이 필요합니다. 번들링을 통해 이러한 파일들을 하나의 번들로 묶음으로써 관리가 용이해집니다.

  2. 모듈화: 모던 웹 개발에서는 모듈화가 중요한데, 번들링은 모듈 시스템을 지원하여 코드를 모듈 단위로 분할하고 관리할 수 있게 합니다. 이로써 코드의 재사용성과 유지보수성이 향상됩니다.

최적화 및 성능 향상

  1. 파일 크기 최소화: 번들러는 코드의 중복을 제거하고 최소한의 코드만 번들에 포함시킴으로써 파일 크기를 최소화합니다. 이는 페이지 로딩 속도를 개선하고 사용자 경험을 향상시킵니다.

  2. 코드 스플리팅: 웹팩은 코드 스플리팅을 지원하며, 필요한 코드 조각만 로드함으로써 초기 로딩 속도를 최적화할 수 있습니다. 이것은 대규모 애플리케이션의 경우 특히 중요합니다.

  3. 트리 쉐이킹: 웹팩은 사용되지 않는 코드를 제거하는 트리 쉐이킹(Tree Shaking)을 수행하여 번들 크기를 더욱 최적화합니다.

리소스 관리

  1. CSS, 이미지 및 기타 리소스 번들링: 웹팩을 사용하면 CSS 파일을 번들링하고 이미지, 폰트와 같은 리소스도 적절하게 처리할 수 있습니다. CSS 모듈을 사용하여 컴포넌트별로 스타일을 관리하고 필요한 이미지 및 폰트를 로드할 수 있습니다.
    서버에서의 전송 용이성:

  2. 번들링을 통해 하나의 파일로 애플리케이션을 제공하면 서버에서 클라이언트로 전송할 때 단일 HTTP 요청으로 처리할 수 있습니다. 이는 웹 서버 및 CDN(Content Delivery Network)에서 애플리케이션을 쉽게 제공할 수 있도록 돕습니다.
    모듈 의존성 관리:

  3. 모듈 번들러를 사용하면 애플리케이션의 모듈 의존성을 명시적으로 정의하고 관리할 수 있습니다. 이는 애플리케이션의 복잡성을 관리하고 버그를 줄이는 데 도움이 됩니다.

리액트 애플리케이션에서 번들링을 통해 코드의 구조를 체계화하고 최적화하여 사용자 경험을 향상시키고, 개발자에게 코드 관리와 유지보수의 편의성을 제공합니다. 번들링은 현대 웹 개발에서 필수적인 도구 중 하나이며, 웹팩과 같은 번들러를 사용하여 이러한 이점을 활용할 수 있습니다.

webpack

애플리케이션을 번들링하는 가장 일반적인 방법은 웹팩(Webpack)을 사용하는 것입니다. 웹팩은 모듈 번들러로서, 여러 파일 및 모듈을 하나의 번들로 묶는 역할을 합니다. 아래는 리액트 애플리케이션을 웹팩을 사용하여 번들링하는 기본적인 단계입니다

>미리 알고 가자

CRA를 사용하면 웹팩 설정 및 기타 빌드 도구 설정을 직접 작성할 필요가 없으며, 프로젝트 구조와 개발 환경이 사전 구성되어 있습니다. 번들링, 코드 스플리팅, 자동 리로딩, 개발 및 프로덕션 빌드 등의 기능이 포함되어 있어 개발자가 이러한 작업을 간단하게 수행할 수 있습니다.

프로젝트 초기화 및 의존성 설치:

프로젝트 디렉토리에서 터미널 또는 명령 프롬프트를 열고 다음 명령을 실행하여 프로젝트를 초기화합니다:

npm init -y

그리고 웹팩과 필요한 로더 및 플러그인을 설치합니다. 웹팩의 주요 의존성은 webpack, webpack-cli입니다.

npm install webpack webpack-cli --save-dev

웹팩 설정 파일 생성:

프로젝트 루트 디렉토리에 웹팩 설정 파일인 webpack.config.js 파일을 생성합니다. 이 파일은 웹팩의 동작을 정의하는데 사용됩니다.


// webpack.config.js

const path = require('path');

module.exports = {
  entry: './src/index.js', // 애플리케이션의 진입점 파일
  output: {
    path: path.resolve(__dirname, 'dist'), // 번들된 파일의 출력 디렉토리
    filename: 'bundle.js', // 번들된 파일의 이름
  },
};

리액트 및 바벨 설정:

리액트를 사용하려면 바벨(Babel)과 바벨 로더(Babel Loader)를 설정해야 합니다. 이를 통해 최신 자바스크립트 문법과 JSX 문법을 변환합니다. .babelrc 파일을 프로젝트 루트 디렉토리에 생성하고 필요한 바벨 설정을 추가합니다.

예시 .babelrc 파일:


{
  "presets": ["@babel/preset-env", "@babel/preset-react"]
}

로더 및 플러그인 설정:

웹팩에서는 다양한 로더와 플러그인을 사용하여 파일을 번들링하고 최적화할 수 있습니다. 예를 들어, CSS 파일을 번들링하려면 css-loader와 style-loader를 설치하고 웹팩 설정 파일에 추가해야 합니다.

bash
Copy code
npm install css-loader style-loader --save-dev

웹팩 설정 파일에서 로더 및 플러그인을 추가합니다.


// webpack.config.js

module.exports = {
  // ... 다른 설정 ...

  module: {
    rules: [
      {
        test: /\.js$/, // .js 확장자를 가진 파일에만 바벨 적용
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
        },
      },
      {
        test: /\.css$/, // .css 확장자를 가진 CSS 파일에 적용
        use: ['style-loader', 'css-loader'],
      },
    ],
  },
};

웹팩 스크립트 실행:

package.json 파일의 스크립트 부분에 웹팩 빌드 스크립트를 추가합니다.

json

"scripts": {
  "build": "webpack"
}

이제 npm run build 명령을 실행하여 웹팩 빌드를 실행할 수 있습니다.

번들링 및 실행:

개발을 마친 후, 웹팩 빌드를 실행하고 번들된 결과물을 웹 서버에서 제공하여 웹 애플리케이션을 확인합니다.

이러한 단계를 따르면 웹팩을 사용하여 리액트 애플리케이션을 번들링하고 최적화할 수 있습니다. 또한, 웹팩 로더 및 플러그인을 사용하여 다양한 리소스를 처리하고 최신 자바스크립트 문법을 지원할 수 있습니다.

profile
형선

0개의 댓글