번들을 과체중이 되지 않게 하세요

발행: (2025년 12월 3일 오후 06:54 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

Overweight란 무엇인가?

Overweight는 최신의, 설정이 필요 없는 CLI로, 빌드 산출물의 크기 예산을 정의할 수 있게 해줍니다. 파일이 예산을 초과하면 Overweight가 오류를 발생시켜 CI 파이프라인이 실패합니다.

설치 및 사용법

Overweight를 npx로 바로 실행할 수 있습니다:

# Basic usage
npx overweight --file "dist/*.js" --max-size 50kb
# Specify compression type
npx overweight --file "dist/*.js" --max-size "15 kB" --compression brotli

로컬에 설치하고 싶다면:

pnpm add -D overweight
pnpm overweight

설정

package.jsonoverweight 섹션을 추가하거나 독립적인 overweight.config.json 파일을 만들세요. 아래는 앱의 다양한 부분에 대해 압축 유형과 제한을 혼합한 실제 예시입니다:

{
  "checks": [
    {
      "path": "build/static/js/main.*.js",
      "maxSize": "150kb",
      "compression": "brotli"
    },
    {
      "path": "build/static/js/chunk-*.js",
      "maxSize": "50kb",
      "compression": "gzip"
    },
    {
      "path": "build/static/css/*.css",
      "maxSize": "20kb",
      "compression": "none"
    }
  ]
}

설정된 예산으로 검사를 실행합니다:

npx overweight

CI 통합

Overweight는 CI에서 앱을 부풀리는 풀 리퀘스트를 차단할 때 빛을 발합니다. 아래는 PR 및 main 브랜치에 푸시될 때 실행되는 바로 사용할 수 있는 GitHub Action 워크플로우 예시입니다:

name: bundle-overweight-test

on:
  pull_request:
  push:
    branches: [main]

jobs:
  overweight:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: yoavniran/overweight@v1
        with:
          config: overweight.json
          update-baseline: true
          report-file: overweight-report.json
          github-token: ${{ secrets.GITHUB_TOKEN }}
  • 파일이 허용된 크기를 초과하면 작업이 실패합니다.
  • update-baselinetrue이고 보고서가 변경되면(크기 또는 설정 업데이트로 인해) 액션이 별도의 PR을 만들어 보고서 파일을 업데이트합니다.

기능

  • Modern defaults – 오늘날의 CI 환경을 위해 설계되었습니다.
  • Flexible config – glob 패턴, 파일별 압축 설정(Brotli, Gzip, 또는 없음).
  • Zero‑config CLI – 설정 파일을 커밋하지 않고도 바로 사용해볼 수 있습니다.
  • Reliable CI – GitHub Actions와 원활하게 작동합니다.

시작하기

Overweight를 사용해보고 번들 크기 증가에 대한 걱정을 멈추세요.

GitHub에서 Overweight를 확인하세요 – 마음에 든다면 ⭐️를 눌러 주세요.

Back to Blog

관련 글

더 보기 »

JavaScript 첫 걸음: 간단한 정리

JavaScript에서 변수 let: 나중에 값이 변경될 수 있는 경우에 사용합니다. 예시: ```javascript let age = 20; age = 21; ``` const: 값이 절대로 변경되지 않아야 할 때 사용합니다.