Oxlint
Oxlint(/oʊ-ɛks-lɪnt/)는 Oxc 컴파일러 스택 위에서 동작하는 JavaScript·TypeScript용 고성능 린터입니다.
대규모 저장소를 염두에 둔 설계
Oxlint는 큰 저장소와 CI 환경을 위해 설계되었습니다. ESLint에서 성능을 제한하는 구조적 병목을 줄이는 아키텍처입니다.
벤치마크에 따르면 Oxlint는 ESLint보다 약 50~100배 빠릅니다.
올바름(correctness) 중심 기본값
Oxlint는 설치 직후에도 유용합니다. 기본적으로 신호 대 잡음이 높은 올바름 검사를 우선합니다. 잘못되었거나 안전하지 않거나 불필요한 코드를 드러내어, 과도한 노이즈 없이 도입할 수 있습니다.
요구가 바뀌면 규칙을 단계적으로 켤 수 있습니다.
호환을 중시한 대규모 규칙 세트
마이그레이션을 단순하게 하기 위해 Oxlint는 755개 이상의 규칙을 포함하며, 팀이 이미 쓰는 린터 플러그인을 폭넓게 다룹니다.
- ESLint 코어 규칙
- TypeScript 규칙(타입 인지 규칙 포함)
- React, Jest, Vitest, Import, Unicorn, jsx-a11y 등 인기 플러그인
- ESLint 플러그인 생태계와 호환되는 사용자 정의 JS 플러그인
이 범위 덕분에 규칙 커버리지를 잃지 않고 마이그레이션하기 쉽습니다. 또한 린터 설정 전체를 마이그레이션하는 도구가 준비되어 있습니다.
타입 인지 린팅
Oxlint는 TypeScript 컴파일러의 Go 네이티브 포트(tsgo, 일명 TypeScript 7)를 활용하여 TypeScript와 동일한 타입 시스템 동작을 제공합니다.
이를 통해 부동 프라미스(floating promise) 탐지처럼 타입이 필요한 핵심 검사가 가능합니다.
반면 Biome의 접근은 TypeScript 컴파일러 대신 자체 타입 추론을 구현하며, 커버리지는 아직 개선 중이라고 밝힙니다.
참고: 타입 인지 린팅
다중 파일 분석
Oxlint는 다중 파일 분석을 일급 기능으로 지원합니다.
켜면 저장소 전체 모듈 그래프를 만들고 규칙 간에 파싱·해석을 공유합니다. 파일 간 import에 의존하는 검사가 나아지고, ESLint에서 import/no-cycle 같은 규칙에서 흔한 성능 절벽을 피하는 데 도움이 됩니다.
참고: 다중 파일 분석
사람과 AI 모두에게 친화적인 진단
Oxlint 진단은 사람이 읽기 쉽고 기계가 처리하기 쉽도록 설계되었습니다.
명확한 메시지 외에도 정확한 구간, 컨텍스트 데이터, 관련 문서 링크 등 구조화된 정보를 담아, AI가 이슈를 이해하고 수정을 안정적으로 적용하는 데 도움이 됩니다.
안정성을 최우선
Oxlint는 실패가 용납되지 않는 워크플로를 위해 만들어졌습니다.
크래시는 최우선 버그로 취급합니다. 성능 퇴보도 버그로 취급합니다.
특히 CI와 대형 모노레포에서는 안정성과 처리량을 항상 우선합니다.
시작하기
권장 설정은 Oxlint를 dev 의존성으로 설치하고 스크립트를 추가하는 것입니다.
pnpm add -D oxlintpackage.json에 스크립트:
{
"scripts": {
"lint": "oxlint",
"lint:fix": "oxlint --fix"
}
}다음 단계:
도입 경로
TIP
ESLint에서 옮기는 경우 자세한 안내는 「ESLint에서 마이그레이션」 페이지를 보세요.
저장소에 맞는 방식을 고르세요.
- ESLint 대체(대부분의 프로젝트에 권장). Oxlint를 주 린터로 사용합니다.
@oxlint/migrate등 도구로 기존 ESLint 설정을 옮깁니다.
- 점진적 마이그레이션(매우 크고 복잡한 저장소에 권장). 먼저 Oxlint를 실행하고, 겹치는 규칙을 끈 ESLint를 이어서 실행합니다. CI는 빠르게 유지하면서 옮길 수 있습니다.
- 둘 다 돌릴 때는
eslint-plugin-oxlint로 ESLint에서 이미 Oxlint가 다루는 규칙을 끕니다. - 이 방식에서도
@oxlint/migrate사용을 권장합니다.
- 둘 다 돌릴 때는
Oxlint가 다루는 범위
Oxlint는 다음을 지원합니다.
- JavaScript·TypeScript(
.js,.mjs,.cjs,.ts,.mts,.cts) - JSX·TSX(
.jsx,.tsx) - 프레임워크 파일(
.vue,.svelte,.astro) —<script>블록만 린트
프레임워크별 자세한 지원은 호환성 표를 보세요.
기능
- 큰 JavaScript 의존성 트리 없이 네이티브 플러그인으로 넓은 규칙 커버리지 — 내장 규칙 756개
- 안전한 변경을 빠르게 적용하는 자동 수정
- 린트 경로를 제어하는 무시 파일
- 파일 안에서 규칙을 무시하는 인라인 무시 주석
- 프로젝트 전체 맥락이 필요한 규칙을 위한 다중 파일 분석 — 예: no-cycle 같은 import 분석
- TypeScript 타입 정보가 필요한 규칙을 위한 타입 인지 린팅
- 기존 ESLint 플러그인과의 호환을 위한 JS 플러그인(알파)
Oxlint를 쓰는 프로젝트
다음을 포함해 여러 프로젝트가 운영 환경에서 Oxlint를 사용합니다.
- elastic/kibana
- getsentry/sentry-javascript
- renovatebot/renovate
- preactjs/preact
- date-fns/date-fns
- outline/outline
- PostHog/posthog
- actualbudget/actual
- cloudflare/agents