[javascript] Webpack으로 웹팩 번들링 최적화하기

웹팩은 모듈 번들러로서 자바스크립트 애플리케이션을 위한 번들 파일을 생성하는 도구입니다. 웹팩을 사용하면 여러 개의 자바스크립트 파일을 하나의 번들 파일로 합치고, 필요한 모듈만 로딩하여 애플리케이션의 성능을 향상시킬 수 있습니다. 하지만, 웹팩 번들링 시에는 번들 파일의 크기가 커져서 로딩 시간이 길어지는 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해 웹팩 번들링을 최적화할 수 있습니다.

이번 글에서는 웹팩 번들링을 최적화하는 방법에 대해 알아보겠습니다.

1. 압축 플러그인 사용하기

웹팩 번들링 시에는 번들 파일의 크기를 최소화하기 위해 압축 플러그인을 사용할 수 있습니다. UglifyJsPlugin이나 TerserPlugin을 사용하여 자바스크립트 코드를 압축하고, OptimizeCSSAssetsPlugin을 사용하여 CSS 코드를 압축할 수 있습니다.

const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');

module.exports = {
  optimization: {
    minimizer: [new UglifyJsPlugin(), new OptimizeCSSAssetsPlugin()]
  }
}

위의 예시 코드에서는 UglifyJsPluginOptimizeCSSAssetsPlugin을 웹팩의 optimization 설정에 추가하여 압축 플러그인을 사용하고 있습니다.

2. 코드 스플리팅하기

웹팩은 코드 스플리팅 기능을 제공하여 애플리케이션의 라우팅 및 로딩 속도를 최적화할 수 있습니다. 이를 통해 필요한 모듈만 로딩하여 초기 번들 크기를 줄일 수 있습니다.

module.exports = {
  // ...
  optimization: {
    splitChunks: {
      chunks: 'all'
    }
  }
}

위의 예시 코드에서는 웹팩의 optimization 설정에 splitChunks 옵션을 추가하여 코드 스플리팅을 사용하고 있습니다.

3. 로더 최적화하기

웹팩 로더는 번들링 과정 중에 특정 파일 형식을 변환하거나 로딩하기 위해 사용되는 도구입니다. 로더를 최적화하여 번들링 시간을 단축할 수 있습니다. Babel 등의 트랜스파일러를 사용할 때는, 필요한 최소한의 트랜스파일링만 수행하도록 설정할 수 있습니다.

module.exports = {
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env']
          }
        }
      }
    ]
  }
}

위의 예시 코드에서는 웹팩의 로더 설정에 babel-loader를 사용하고 있으며, @babel/preset-env 프리셋을 적용하여 필요한 최소한의 트랜스파일링만 수행하도록 설정하였습니다.

4. 불필요한 디버그 정보 제거하기

웹팩으로 번들링된 파일에는 디버그 정보가 포함되는 경우가 있습니다. 이러한 디버그 정보는 애플리케이션 크기를 증가시키므로, 배포 환경에서는 제거하는 것이 좋습니다. DefinePlugin을 사용하여 디버그 정보를 제거할 수 있습니다.

const { DefinePlugin } = require('webpack');

module.exports = {
  plugins: [
    new DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('production')
    })
  ]
}

위의 예시 코드에서는 웹팩의 플러그인 설정에 DefinePlugin을 사용하여 환경 변수 NODE_ENV 값을 'production'으로 설정하여 디버그 정보를 제거하고 있습니다.

결론

위에서 소개한 방법을 활용하여 웹팩 번들링을 최적화할 수 있습니다. 압축 플러그인, 코드 스플리팅, 로더 최적화, 디버그 정보 제거 등의 전략을 적용하여 애플리케이션의 성능을 향상시킬 수 있습니다. 웹팩을 사용하는 개발자라면 번들링 최적화를 고려해보는 것이 좋습니다.


참고 자료: