Oxlint Import 플러그인 알파
oxlint --import-plugin의 알파 릴리스를 공개합니다. eslint-plugin-import를 이식한 것입니다.
이 포트는 eslint-plugin-import와 알려진 문제를 해결하는 것을 목표로 합니다.
- 성능 — 특정 규칙을 켜면 실행 시간이 1분을 넘는 경우
- 의존성 크기 — 188개 패키지, 합계 약 30MB
- 하위 호환 — Node.js v4.0.0 지원 필요
- 의존성 호환 —
eslint-plugin-import-x로 갈아타야 하는 경우 - ESLint v9로의 업그레이드
이번 릴리스에 포함된 것
알파는 프로젝트가 ESM(ECMAScript Modules)일 때 동작할 것으로 기대합니다.
경로 별칭(예: @/foo)이 tsconfig.compilerOptions.paths로 필요하면 --tsconfig 옵션을 쓸 수 있습니다.
npx oxlint@latest --tsconfig ./tsconfig.json --import-pluginnpx oxlint@latest --import-plugin으로 기본 켜지는 규칙:
npx oxlint@latest --import-plugin -D rule-name으로 선택적으로 켤 수 있는 규칙:
- no-named-as-default
- no-named-as-default-member
- no-self-import
- no-duplicates
- no-amd
- no-default-export
- no-cycle
규칙 자체도 개선되었습니다. 예를 들어 no-cycle 진단이 다음과 같이 나아졌습니다.
⚠ eslint-plugin-import(no-cycle): Dependency cycle detected
╭─[apps/web/playwright/lib/fixtures.ts:13:42]
12 │ import { createPaymentsFixture } from "../fixtures/payments";
13 │ import { createBookingPageFixture } from "../fixtures/regularBookings";
· ─────────────────────────────
14 │ import { createRoutingFormsFixture } from "../fixtures/routingForms";
╰────
help: These paths form a cycle:
-> ../fixtures/regularBookings - apps/web/playwright/fixtures/regularBookings.ts
-> ./users - apps/web/playwright/fixtures/users.ts
-> ../lib/testUtils - apps/web/playwright/lib/testUtils.ts
-> ./fixtures - apps/web/playwright/lib/fixtures.ts긴 기능 목록은 아니지만, 현재 생태계 상태가 복잡해 이 규칙들을 구현하고 제대로 동작하게 만드는 데 많은 노력이 들었습니다.
지난 6개월간 여가 시간에 --import-plugin이 돌아갈 전제 조건을 마쳤습니다.
- 모듈 해석용 resolver
- 의존 파일을 최대한 병렬로 처리하는 작은 "런타임"
- import / export 정보를 담는
ModuleRecord와 빌더
어떻게 도울 수 있나요?
프로젝트 관리자(일명 설정 엔지니어)로서 ESLint와 플러그인을 계속 최신으로 유지할 시간이 없다면, @brooooooklyn처럼 모든 프로젝트에서 ESLint를 oxlint로 바꾸는 방법을 참고해 보세요.
오픈소스에 기여하고 싶다면 discord에서 이야기하거나, linter 제품 계획·진행 이슈를 보거나, 연기되었던 새 규칙 제안을 도와 주세요.
엔지니어링 매니저이거나 인프라 비용 절감을 위해 프로젝트를 oxlint(330개 이상 규칙, 계속 늘어남)로 옮기려 한다면 스폰서를 고려해 주시면 해당 프로젝트를 우선할 수 있습니다.
oxlint는 현재 커뮤니티 주도입니다. 자원이 충분하다면 몇 달 안에 --import-plugin도 정식 수준이 될 수 있다고 믿습니다.
