Oxlint v1.0 안정 버전
INFO
이 블로그 포스트는 처음으로 VoidZero 웹사이트에 게시되었습니다.
TL;DR: 첫 번째 안정 버전인 Oxlint이 출시되었습니다! ESLint 대비 50~100배의 성능 향상, 500개 이상의 ESLint 규칙 지원, 그리고 쇼피파이, 에어비앤비, 메르세데스벤츠와 같은 주요 기업들에서의 실제 적용 사례를 통해, 지금 바로 사용해 보세요. 빠른 시작하기.
Oxlint은 자바스크립트 및 타입스크립트를 위한 빠르고 쉽게 도입할 수 있도록 설계된, 루스트 기반의 린터입니다. 2023년 12월 초도 발표 이후, Oxlint은 획기적인 개선을 거쳐 이번에 최초의 안정 버전인 1.0을 출시하게 되었습니다.
또한 안정적 출시 외에도, 우리는 현재 전담 정기 유지보수 담당자가 있으며, 캠러론이 이를 맡고 있고, 린터의 유지 및 개선을 위해 성장 중인 핵심 팀이 존재함을 함께 알립니다.
실제 적용 사례
우리는 실세계에서 큰 규모의 코드베이스에 적용된 Oxlint의 성능과 그로 인한 영향에 매우 자랑스럽게 생각합니다. 이로 인해 지속적 통합(CI) 비용이 감소하였습니다.
우리의 5,200명의 초기 사용자 및 다음과 같은 기업 및 프로젝트들에게 감사드립니다:
- 쇼피파이: 앞서 플랫폼 팀이 쇼피파이 관리 콘솔에서 Oxlint을 사용하고 있습니다.
- 에어비앤비: 126,000개 이상의 파일에 대해 다중 파일 분석 oxc/no-barrel-file 및 import/no-cycle을 사용하며, CI 환경에서 7초 내에 완료됩니다. 반면, ESLint의 해당 규칙 구현은 시간 초과됩니다.
- 메르세데스벤츠, ESLint에서 Oxlint으로 전환하면서 린트 시간이 71% 감소했으며, 일부 프로젝트에서는 최대 97%까지 속도 향상을 경험했습니다.
- 대규모 오픈소스 프로젝트들 — 런타임인 Bun부터 프레임워크인 Preact까지.
우리가 찾은 가장 큰 저장소에서, Oxlint은 다음과 같이 보고했습니다:
10개 스레드를 사용하여 264,925개 파일에 101개 규칙을 적용하고 22.5초 소요.엑스 및 블루스키에 게시된 실제 사례 기반으로, 사용되는 스레드 수에 따라 초당 약 10,000개 파일을 처리할 수 있습니다.
빠른 시작
개발자라면 도구 설정에 몇 시간을 들이지 않고도 즉시 코드 검사를 시작하고 싶을 것입니다. 옵션 없이도 바로 문제를 잡아낼 수 있습니다.
설치 없이 실행하세요.
$ npx oxlint@latest$ pnpm dlx oxlint@latest$ yarn dlx oxlint@latest$ bunx oxlint@latest$ deno run npm:oxlint@latest설정이나 구성이 필요하지 않지만, .oxlintrc.json 파일을 통해 구성할 수 있습니다. 이는 더 큰 프로젝트 또는 추가 맞춤화가 필요한 프로젝트에 유용합니다.
이 구성 형식은 ESLint v8의 평면 구성(플랫 컨피그)을 기반으로 하여, 마이그레이션 과정이 쉽고 익숙합니다. 각 소스 파일은 가장 가까운 적용 가능한 구성으로 린팅되며, 특정 글로브 패턴을 타겟으로 오버라이드를 사용할 수 있습니다. 또한 공유 구성 확장 기능을 통해 팀 간 일관성을 유지할 수 있습니다.
이미 ESLint를 사용 중인 프로젝트라면, oxlint-migrate를 사용하여 기존 ESLint 평면 구성 파일을 Oxlint으로 마이그레이션할 수 있습니다.
또한, 두 린터를 동시에 사용할 때 중복되는 ESLint 규칙을 비활성화하는 데 eslint-plugin-oxlint를 활용할 수 있습니다.oxlint && eslint를 실행하는 것이 권장되며, 이는 Oxlint의 빠른 피드백 사이클을 효과적으로 활용할 수 있습니다.
더 자세한 사용 방법 및 프로젝트 또는 에디터와의 통합 절차는 설치 안내서를 확인하세요.
버전 관리
런타임 코드를 포함하는 라이브러리와 달리, 린터는 반환하는 진단 정보만 변경됩니다. 따라서 Oxlint은 의미론적 버전 관리를 따릅니다:
- 패치 릴리스: 버그 수정만 포함.
- 미니멀 릴리스: 구성 변경 없이 규칙 커버리지 및 진단 정보 확장.
- 메이저 릴리스: CLI 또는 구성 변경이 발생하며, 마이그레이션이 필요할 수 있음.
참고로, 미니멀 릴리스에서도 새로 추가된 규칙이 이전에 숨겨져 있던 문제를 발견할 수 있으므로, 여전히 당신의 CI를 깨뜨릴 수 있습니다. 자세한 내용은 우리의 버전 관리 안내서를 참고하세요.
주요 특징
종합적인 규칙 커버리지
다양한 출처로부터 500개 이상의 규칙을 포함하고 있습니다:
typescript-eslint에서 제공하는 타입 체크되지 않은 타입스크립트 전용 규칙 포함, 완전한 ESLint 규칙 세트.eslint-plugin-unicorn,eslint-plugin-jsdoc,eslint-plugin-react,eslint-plugin-react-hooks,eslint-plugin-jest,eslint-plugin-import등 인기 있는 플러그인 규칙.- 고유한 Oxlint 규칙 — 잘못된 비교 시퀀스, const 비교, 재귀에서만 사용됨
유연한 구성
.oxlintrc.json 파일을 통해 다음을 지원하는 구성이 가능합니다:
- 특정 디렉터리에 적용되는 중첩 구성
- 특정 파일 유형 또는 위치를 타겟으로 하는 오버라이드 패턴
- 팀 일관성을 위한 공유 구성 확장
에디터 통합
최고 수준의 에디터 지원을 제공하며, 다음 에디터용 확장 프로그램을 제공합니다:
- VS Code
- IntelliJ IDEA 및 WebStorm
- Zed Editor
- 다른 에디터를 위한 언어 서버 프로토콜 지원
유용한 진단 정보
오류 메시지를 설명하는 것뿐만 아니라, 문제를 시각화하고 어떻게 해결할 수 있는지 제안함으로써, 명확하고 행동 가능한 오류 메시지를 제공하도록 설계되었습니다.
Oxlint이 상세한 오류 보고와 함께 터미널에서 실행 중
벤치마킹
우리의 벤치마킹 결과에 따르면, 동일한 설정에서 Oxlint은 ESLint보다 약 50~100배 빠릅니다.
| 도구 | 시간 |
|---|---|
| oxlint (다중 스레드) | 615.3 ms |
| oxlint (단일 스레드) | 1.840 s |
| eslint | 33.481 s |
로드맵
Oxlint 1.0은 시작점일 뿐입니다! 안정적이라고 하지만, 미래 릴리스를 위해 중요한 기능과 개선사항을 계획하고 있습니다:
사용자 정의 규칙 – 곧 출시될 자바스크립트 플러그인 지원을 통해, 팀이 Oxlint 아키텍처와 자연스럽게 통합되는 사용자 정의 규칙을 작성할 수 있게 됩니다.
성능 최적화 – 파싱 및 분석 속도에 대한 지속적인 개선.
세부적인 (글로브별) 구성 — ESLint v9 구성 방식.
감사의 말
Oxlint 1.0은 200명 이상의 기여자들의 공동 노력이 모아진 산물입니다. 모든 버그 리포트, 기능 요청, 코드 기여에 감사드립니다.
특별히 다음과 같은 분들께 감사를 드립니다:
- @branchseer: 다중 파일 분석 런타임 구현.
- @camc314, @mysteryven, @shulaoda: 많은 복잡한 린트 규칙, 테스팅, 그리고 지속적인 개선 작업.
- @camchenry: 중첩 구성 지원 구현.
- @DonIsaac: 구성, 문서, 웹사이트 개선 및 스퀴글컨프 2024에서 Oxc를 대표.
- @leaysgur: RegExp 파서 및 JSDoc 플러그인.
- @Sysix:
eslint-plugin-oxlint유지보수 및 언어 서버 및 VSCode 확장 프로그램에 기여. - @u9g 및 @rzvxa: 제어 흐름 그래프 분석 구현.
커뮤니티 참여하기
우리는 당신의 의견을 듣는 것을 기대하며, 당신의 개발 워크플로우를 개선하는 데 어떻게 도움이 되는지 보는 것도 기대됩니다. 저희와 연결하세요:
당신의 피드백은 Oxlint의 진화를 이끄는 원동력입니다.


