TechFeedTechFeed
Frontend

Biome 실전 가이드 — Rust 기반 초고속 린터+포매터, ESLint와 Prettier를 하나로

ESLint + Prettier 조합을 단일 도구로 대체하는 Biome 1.9 실전 가이드. 설치, biome.json 설정, ESLint/Prettier 마이그레이션, VS Code 통합, GitHub Actions CI 구성까지 정리.

Biome은 ESLint와 Prettier를 하나로 통합한 Rust 기반 JavaScript/TypeScript 툴체인이다. 기존 두 도구를 동시에 사용할 때 발생하는 설정 충돌, 느린 실행 속도, 복잡한 플러그인 관리를 한 번에 해결한다. Biome은 ESLint 대비 최대 25배, Prettier 대비 35배 빠르며, 단일 바이너리로 린팅과 포매팅을 모두 처리한다.

이 가이드가 필요한 사람: 대형 TypeScript 프로젝트에서 ESLint + Prettier 조합이 느리거나 설정 충돌로 고생하는 프론트엔드/풀스택 개발자, 린팅 툴체인을 현대화하려는 팀 리드.

Biome이란 무엇인가

Biome은 Rome Tools 프로젝트를 이어받아 재출발한 오픈소스 툴체인이다. 2023년 1.0, 2024년 1.5를 거쳐 2025~2026년 기준 1.9 버전이 안정적으로 운영 중이다. 핵심 특징은 세 가지다.

1) 통합 도구: 린팅(ESLint 역할)과 포매팅(Prettier 역할)을 단일 실행 파일로 처리한다. biome check 명령 하나로 두 작업을 동시에 수행한다.

2) Rust 기반 성능: Biome은 전체가 Rust로 작성되어 있어 Node.js 기반 도구와 성능 차이가 크다. 공식 벤치마크 기준으로 10만 줄 규모 프로젝트에서 ESLint는 약 8초, Biome은 0.3초 이내에 처리한다.

3) 제로 설정: 기본값만으로도 React, TypeScript, JSX, JSON, CSS, GraphQL 파일을 지원한다. 별도 플러그인 없이 바로 동작한다.
Biome 툴체인 아키텍처 — ESLint와 Prettier를 Rust 단일 바이너리로 통합
Biome은 파서, 린터, 포매터를 하나의 Rust 바이너리로 통합해 실행한다

설치와 기본 설정

Biome 설치는 npm, pnpm, yarn 모두 지원하며, 글로벌 설치 없이 프로젝트 로컬로 사용하는 것이 권장된다.
Biome 설치
# npm npm install --save-dev --save-exact @biomejs/biome # pnpm pnpm add --save-dev --save-exact @biomejs/biome # yarn yarn add --dev --exact @biomejs/biome # 설정 파일 초기화 npx @biomejs/biome init
biome init을 실행하면 프로젝트 루트에 biome.json이 생성된다. 아래가 기본 설정 파일 구조다.
biome.json 기본 구조
{ "$schema": "https://biomejs.dev/schemas/1.9.0/schema.json", "organizeImports": { "enabled": true }, "linter": { "enabled": true, "rules": { "recommended": true } }, "formatter": { "enabled": true, "indentStyle": "space", "indentWidth": 2, "lineWidth": 100 }, "javascript": { "formatter": { "quoteStyle": "double", "trailingCommas": "all", "semicolons": "always" } } }

CLI 명령어 핵심 정리

Biome의 CLI 명령어는 직관적이다. 기억할 명령어 4개로 대부분의 워크플로우가 해결된다.
Biome 주요 CLI 명령어
# 린트 + 포맷 검사 (변경 없이) npx biome check ./src # 린트 + 포맷 자동 수정 npx biome check --apply ./src # 포맷만 (prettier 대체) npx biome format --write ./src # 린트만 (eslint 대체) npx biome lint ./src # 특정 파일 npx biome check src/components/Button.tsx # CI 환경 (오류 코드 반환) npx biome ci ./src
biome check --apply는 자동 수정 가능한 린트 오류와 포매팅을 동시에 처리한다. biome ci는 수정 없이 검사만 하고 문제가 있으면 non-zero exit code를 반환해 CI 파이프라인에 적합하다.

package.json 스크립트 등록 예시:
package.json scripts
{ "scripts": { "lint": "biome lint ./src", "format": "biome format --write ./src", "check": "biome check --apply ./src", "ci": "biome ci ./src" } }

ESLint + Prettier에서 마이그레이션하는 법

기존 프로젝트에서 마이그레이션할 때 Biome은 공식적으로 마이그레이션 명령어를 제공한다.
ESLint 설정 마이그레이션
# ESLint 설정을 biome.json으로 자동 변환 npx @biomejs/biome migrate eslint --write # Prettier 설정을 biome.json으로 자동 변환 npx @biomejs/biome migrate prettier --write
마이그레이션 후 주의할 점이 있다.

1) 규칙 커버리지 확인: ESLint에는 약 250+개 규칙이 있고, Biome은 그 중 200개 이상을 지원하지만 일부 플러그인 기반 규칙(예: eslint-plugin-import 일부)은 아직 미지원이다. 공식 규칙 목록에서 확인할 것.

2) 포맷 차이: Prettier와 100% 동일한 출력을 보장하지 않는다. 처음 실행 시 전체 파일에 포맷 변경이 생길 수 있으므로 별도 커밋으로 분리하는 것이 좋다.

3) ESLint와 병행 사용: Biome이 지원하지 않는 플러그인 규칙이 필요한 경우 ESLint와 공존할 수 있다. Biome에서 ESLint가 이미 처리하는 규칙을 비활성화하면 충돌 없이 사용 가능하다.
Biome vs ESLint + Prettier 성능 벤치마크 비교
Biome 공식 벤치마크: 10만 줄 기준 ESLint 대비 25배, Prettier 대비 35배 빠르다

VS Code + GitHub Actions 통합

Biome은 VS Code 확장과 GitHub Actions 통합을 공식 지원한다.
VS Code 설정 (.vscode/settings.json)
{ "editor.defaultFormatter": "biomejs.biome", "editor.formatOnSave": true, "editor.codeActionsOnSave": { "quickfix.biome": "explicit" }, // TypeScript/JavaScript 파일에 Biome 적용 "[typescript]": { "editor.defaultFormatter": "biomejs.biome" }, "[typescriptreact]": { "editor.defaultFormatter": "biomejs.biome" }, "[javascript]": { "editor.defaultFormatter": "biomejs.biome" } }
GitHub Actions CI (.github/workflows/biome.yml)
name: Biome on: push: branches: [main] pull_request: branches: [main] jobs: biome: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Biome uses: biomejs/setup-biome@v2 with: version: latest - name: Run Biome run: biome ci .
biomejs/setup-biome 공식 GitHub Action을 사용하면 Node.js나 pnpm 없이 Biome 바이너리만 설치해 CI를 빠르게 구성할 수 있다. 전체 워크플로우가 보통 10~15초 안에 완료된다.

실무 설정 — 파일별 규칙 재정의와 무시 패턴

프로젝트 구조에 따라 특정 디렉토리나 파일에 다른 규칙을 적용해야 할 때 Biome의 overrides를 사용한다.
biome.json — 고급 설정 예시
{ "$schema": "https://biomejs.dev/schemas/1.9.0/schema.json", "files": { "ignore": [ "node_modules", "dist", ".next", "coverage", "*.generated.ts" ] }, "linter": { "enabled": true, "rules": { "recommended": true, "complexity": { "noExcessiveCognitiveComplexity": "warn" }, "correctness": { "noUnusedImports": "error" } } }, "overrides": [ { // 테스트 파일은 일부 규칙 완화 "include": ["**/*.test.ts", "**/*.spec.ts"], "linter": { "rules": { "suspicious": { "noExplicitAny": "off" } } } }, { // 스크립트 디렉토리는 CommonJS 허용 "include": ["scripts/**/*.js"], "linter": { "rules": { "style": { "useImportType": "off" } } } } ] }
Biome VS Code 확장 실행 화면 — 린트 오류와 포맷 수정 표시
VS Code에서 Biome 확장을 사용하면 저장 시 자동으로 린트 수정과 포매팅이 동시에 적용된다

Biome을 쓰지 말아야 할 상황

Biome이 좋은 도구지만, 모든 상황에서 ESLint를 완전 대체하기 어렵다.

아직 마이그레이션이 이른 경우:
- eslint-plugin-security, eslint-plugin-import 심화 규칙이 필요한 보안 중심 프로젝트
- 자체 개발한 ESLint 플러그인이 여러 개 있는 경우 — Biome은 외부 플러그인을 아직 지원하지 않는다
- eslint-plugin-react-hooks의 hooks 의존성 검사가 반드시 필요한 경우 (Biome에서 부분 지원)

점진적 도입 전략: 처음부터 ESLint를 전부 제거하지 말고, Biome을 포매팅 전용으로 먼저 도입하고(Prettier 대체) → 린트 규칙을 하나씩 Biome으로 이전하는 방식이 안전하다.

Biome 공식 문서: biomejs.dev
지원 규칙 현황: biomejs.dev/linter/rules
BiomeESLintPrettierJavaScript 툴체인Rust린터포매터TypeScriptFrontendCI

관련 포스트

Vercel AI SDK 6 완전 가이드 — 에이전트 1급 추상화, MCP 풀 지원, DevTools2026-04-17Playwright E2E 테스트 자동화 실전 가이드 — 설치부터 CI/CD 통합까지2026-04-03TypeScript 6.0 마이그레이션 가이드 — strict 기본값화, ESM 전환, Go 컴파일러 전환 준비2026-04-05React Compiler 1.0 실전 마이그레이션 가이드 — useMemo·useCallback 없는 React 개발2026-04-24