Oxlint
Oxlint (/oʊ-ɛks-lɪnt/)는 Oxc 컴파일러 스택 기반의 고성능 린터로, 자바스크립트 및 타입스크립트를 위한 것입니다.
대규모 환경 최적화
Oxlint은 대규모 저장소와 CI 환경에서 최적화되어 설계되었습니다. 구조적 성능 저하 요소를 제거함으로써, ESLint에서 발생하는 성능 한계를 극복합니다.
우리의 벤치마크 결과에 따르면, Oxlint은 ESLint보다 50~100배 더 빠릅니다.
정확성 중심의 기본 설정
초기부터 사용 가능하며, 기본적으로 신호 강도가 높은 정확성 검사를 우선시합니다. 이러한 검사는 잘못된, 불안전하거나 의미 없는 코드를 발견해 주므로, 팀이 과도한 경고 없이 바로 Oxlint을 도입할 수 있습니다.
요구사항이 변화함에 따라 추가 규칙을 단계적으로 활성화할 수 있습니다.
광범위하고 점점 확장되는 규칙 세트
Oxlint은 690개 이상의 규칙을 포함하고 있으며, 대부분의 팀이 이미 사용하는 플러그인과도 완전히 호환됩니다. 포함된 항목:
- ESLint 핵심 규칙
- 타입스크립트 규칙
- 리액트, 젝스트, 유니콘, jsx-a11y 등의 인기 플러그인
- ESLint 플러그인 생태계와 호환되는 커스텀 자바스크립트 플러그인
이러한 포괄적인 커버리지 덕분에, 규칙 커버리지 손실 없이 마이그레이션을 쉽게 수행할 수 있습니다.
타입 인식 린팅
Oxlint은 타입스크립트 컴파일러의 네이티브 고언어 포트(tsgo, 즉 타입스크립트 7)를 활용하여, 완전한 타입스크립트 호환성과 타입스크립트 자체에서 기대하는 동일한 타입 시스템 동작을 제공합니다.
이는 타입이 필요한 임무 중심 체크(예: 떠 있는 프로미스 탐지)를 가능하게 합니다.
반면, Biome의 접근 방식은 타입스크립트 컴파일러에 의존하지 않고 자체 타입 추론을 구현하는 것으로, 여전히 커버리지 개선이 필요하다고 언급하고 있습니다.
참고: 타입 인식 린팅
다중 파일 분석 지원
Oxlint은 다중 파일 분석을 첫 번째 기능으로 제공합니다.
활성화 시, Oxlint은 프로젝트 전체 모듈 그래프를 구축하고, 규칙 간에 파싱 및 해석 정보를 공유합니다. 이는 파일 간 종속성에 의존하는 체크를 향상시키며, ESLint에서 자주 보이는 import/no-cycle 같은 규칙의 성능 급락을 방지하는 데 도움이 됩니다.
참고: 다중 파일 분석
AI 친화적인 진단 정보
Oxlint의 진단 정보는 인간이 이해하기 쉬울 뿐만 아니라, 머신이 작동할 수도 있도록 설계되었습니다.
명확한 메시지 외에도, 정밀한 범위 및 관련 맥락 데이터와 같은 구조화된 정보를 포함합니다. 이를 통해 인공지능이 문제를 정확히 이해하고 신뢰할 수 있게 수정을 적용할 수 있습니다.
신뢰성 최우선
실패를 허용할 수 없는 워크플로우를 위해 설계된 Oxlint입니다.
충돌은 최우선 버그로 취급됩니다. 성능 저하 역시 버그로 간주됩니다.
특히 CI 및 대규모 모노레포 환경에서 안정성과 처리량이 항상 최우선입니다.
시작하기
권장 설정은 개발 의존성으로서 Oxlint을 설치하고 스크립트를 추가하는 것입니다.
pnpm add -D oxlintpackage.json에 스크립트를 추가하세요:
{
"scripts": {
"lint": "oxlint",
"lint:fix": "oxlint --fix"
}
}다음 단계:
도입 경로
TIP
ESLint에서 마이그레이션 중이라면, “ESLint에서 마이그레이션” 페이지를 참조하여 자세한 지침을 확인하세요.
저장소에 맞는 방법을 선택하세요:
- ESLint 대체 ( 대부분의 프로젝트에 권장). Oxlint을 주요 린터로 사용합니다.
@oxlint/migrate같은 도구를 사용해 기존 ESLint 설정을 마이그레이션합니다.
- 단계적 마이그레이션 (대규모 저장소에 권장). 먼저 Oxlint을 실행한 후, 겹치는 규칙을 비활성화한 상태에서 ESLint을 실행합니다. 이 방식은 마이그레이션 중에도 CI 속도를 유지합니다.
- 동시에 둘 다 실행하면서 겹치는 ESLint 규칙을 비활성화하기 위해
eslint-plugin-oxlint를 사용합니다. - 이 접근 방식에서도
@oxlint/migrate를 사용하는 것이 가능하며, 권장됩니다.
- 동시에 둘 다 실행하면서 겹치는 ESLint 규칙을 비활성화하기 위해
Oxlint가 지원하는 기능
Oxlint는 다음을 지원합니다:
- 자바스크립트 및 타입스크립트 (
.js,.mjs,.cjs,.ts,.mts,.cts) - JSX 및 TSX (
.jsx,.tsx) <script>블록만을 린팅하는 프레임워크 파일 (.vue,.svelte,.astro)
기능
- 695개의 내장 규칙을 통해 넓은 규칙 커버리지를 제공하는 네이티브 플러그인, JavaScript 의존성 트리가 크지 않습니다.
- 자동 수정을 통해 안전한 변경 사항을 빠르게 적용합니다.
- 무시 파일을 통해 어떤 경로를 린팅할지 조절할 수 있습니다.
- 인라인 무시 주석을 통해 파일 내부에서 특정 규칙을 무시할 수 있습니다.
- 다중 파일 분석을 통해 전역 프로젝트 컨텍스트가 필요한 규칙(예: no-cycle)을 처리합니다.
- 타입 인식 린팅을 통해 타입스크립트 타입 정보가 필요한 규칙을 검사합니다.
- 자바스크립트 플러그인 (실험적) - 기존 ESLint 플러그인과 호환되도록 설계됨.
Oxlint을 사용하는 프로젝트
아래와 같은 인기 있는 프로젝트들이 실제 운영 환경에서 Oxlint을 사용하고 있습니다:
