Oxlint Import Plugin Alpha
我们很高兴地宣布oxlint --import-plugin
将发布 Alpha 版,它是 eslint-plugin-import
的端口。
此端口旨在解决与 eslint-plugin-import
关联的所有已知问题。
- 性能 - 启用某些规则后执行时间长达一分钟
- 依赖项大小 - 总计 30M 的 188 个依赖项
- 向后兼容性 - 必需 支持 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
普遍可用。