Oxlint 導入外掛 Alpha 版
我們很高興宣布 oxlint --import-plugin
的 alpha 版本發布,這是 eslint-plugin-import
的移植版本。
此移植旨在解決所有與 eslint-plugin-import
相關的已知問題
- 效能 - 啟用某些規則時執行時間超過一分鐘
- 依賴項大小 - 188 個依賴項總計 30M
- 向後相容性 - 需要 支援 Node.js v4.0.0
- 依賴項相容性 - 需要將其替換為
eslint-plugin-import-x
- 升級至 ESLint v9
此版本包含哪些內容?
如果您的專案使用 ESM(ECMAScript 模組),則此 alpha 版本預期可以運作。
如果需要透過 tsconfig.compilerOptions.paths 使用路徑別名(例如 @/foo
),則可以使用 --tsconfig
選項
npx oxlint@latest --tsconfig ./tsconfig.json --import-plugin
透過 npx 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
這不是一個很長的功能列表,但由於當前生態系統的複雜性,實施這些規則並確保它們正常運作需要大量的努力。
在過去的六個月裡,我們利用業餘時間工作,並成功完成了 --import-plugin
正常運作的所有先決條件
- 一個用於模組解析的 解析器
- 一個小的 「執行時期」,用於最大程度地並行處理依賴檔案
- 一個
ModuleRecord
資料結構,用於儲存導入/匯出資訊,及其各自的 建立器
我如何提供協助?
如果您是專案維護者(又稱配置工程師),並且沒有時間或精力來更新 ESLint 及其所有外掛程式,您可以效法 @brooooooklyn 的做法,並在他所有專案中以 oxlint 取代 ESLint。
如果您是開源愛好者並願意提供協助,請在 Discord 上與我們交談,查看 linter 產品計畫和進度問題,或透過 提議延後的新的規則 來提供協助。
如果您是工程經理,或者願意將您的專案遷移到 oxlint(具有 330 條規則且持續增加中),以降低基礎設施成本,您可以考慮贊助,以便我們可以優先處理您的專案。
請記住,oxlint
目前是由社群驅動的,我相信只要有足夠的資源,我們可以在未來幾個月內讓 --import-plugin
正式發布。