@aetherall/aexlint

中文文档
0.6.0发布于 2026/10/22MITTypeScriptES Module构建来源已验证近 30 天下载 1933

Oxlint,语法和类型意识的可读性规则,在一个插件中.

中文使用文档
文档目录9 节
  1. 独立的CLI
  2. 逐步采用承诺的基准
  3. 只针对基准订正报告新的调查结果
  4. 插件设置
  5. 规则
  6. 语法
  7. 类型意识
  8. 类型意识设置和限制
  9. 发展

缩写

可读性规则 氧化剂:用于衡量读者必须同时持有多少的语法规则,以及发现有关价值的知识被重复,重新检查,或持有在其所有者之外等类型的规则. 无自定义 .

独立的CLI

需要节点.js 24+.

pnpx @aetherall/aexlint check
pnpx @aetherall/aexlint check src --typed --format json

check 默认为当前目录,并将每个语法规则作为错误运行. --typed 添加每一个有类型意识的规则;项目需要安装其依赖性和TypeScript项目(见下文). 默认限制 :

规则限制
max-expression-depth3个
max-expression-complexity页:1
max-decision-depth2个
max-held-context3个
max-call-assembly宽度 60, 3 个外部名称
max-interpretation-spread页:1
max-projection-spread2个
no-fact-outside-owner页:1
no-default-outside-owner1个
no-derivation-outside-owner2个

限制是起点,而不是经验证的阈值。 对于其他限制或规则子集,请使用插件.

CLI运行自己的被钉住的Oxlint和被捆绑的有型意识后端. 它不使用项目Oxlint, --type-aware 或者说 oxlint-tsgolint,因此一个工程可以继续用另一个 Oxlint 版本进行林入;可选 oxlint-tsgolint 不需要软件包管理器列表.

CLI 忽略了 Oxlint 配置并允许不内置检查 。 Oxlint 的文件排除,忽略文件并禁用注释应用. 添加可重复的除外情形 --ignore-pattern <glob> 或进入 .aexlintignore (每行一格布, # 评论). --format编号 :-f 接受 Oxlint 输出格式。 发现失败了 使用 -- 在以破折号开头的路径之前.

逐步采用承诺的基准

一次记录当前发现并提交文件 :

aexlint check --typed --write-baseline .aexlint-baseline

CI 然后运行 aexlint check --typed --baseline .aexlint-baseline 并且只报告其中缺失的发现。 要接受发现,或删除您所修的发现条目,请再次记录您所修行的路径:

aexlint check --typed --write-baseline .aexlint-baseline src/billing

带着路, --write-baseline 仅替换其下的文件条目并保留其余部分,因此更改会准确显示被接受的内容,目标后的一个分支不能为其他文件放下条目,两个分支只有在它们碰同文件时才会相冲突. 没有路径,它将替换整个文件 。 条目会一直呆到他们的路径再次被记录,所以一个固定的发现可以回到那个文件未报告的. 升级 aexlint 或更改忽略已发现的模式变化: 在同一变化中再次记录整个文件 .

只检查已更改文件的速度更快, 但错过了它不触及的文件的更改原因, 例如更改类型的呼叫器或加入超限扩展的文件 .

只针对基准订正报告新的调查结果

没有承诺的文件,记录基础修订的结果,然后对照他们检查分支:

aexlint="$PWD/node_modules/.bin/aexlint"
git worktree add ../base "$(git merge-base origin/master HEAD)"
(cd ../base && pnpm install --frozen-lockfile && "$aexlint" check --write-baseline /tmp/aexlint-baseline)
"$aexlint" check --baseline /tmp/aexlint-baseline

对两个运行使用相同的版本,旗帜和路径,从每次检查的根开始. 这还报告在基地确定的调查结果,但每次检查需要第二次安装和运行。 一个发现是它的文件,规则和消息:它活下来了被移动的行,但当它的信息改变,其文件被重新命名,或者由于其他地方的改变而来时会回来. 文件中的相同发现被计算在内,包括被禁用评论所沉默的. 分析错误从未跳过 。 当一个规则不能运行, 如打出的规则没有它的后端, --write-baseline 失败, 写不出来 。 基线仅适用于国家行动倡议.

插件设置

需要节点.js 24+和Oxlint 1.83.0.

pnpm add -D [email protected] @aetherall/aexlint

.oxlintrc.json数字 :

{
  "jsPlugins": ["@aetherall/aexlint"],
  "rules": {
    "aexlint/max-expression-depth": ["warn", { "max": 3 }],
    "aexlint/no-repeated-value-policy": "warn"
  }
}

插件允许默认规则 。 Type-aware规则需要下面的TypeScript设置;语法规则不需要更多.

规则

语法

规则报告
最大表达深度紧闭的电话
最大表达式复杂度在一个表达式内工作
最大决定深度嵌入逻辑组和三角形
最大调用组装使用许多外部名称的大调
最大持有的文本关闭决定、循环和召回
没有,如果else if 链条
无多线条件跨越多行的条件
无位置分隔符由通行证位置而不是在棋子之间放置分离器
偏好域预览从几个检查中构建的无名分类

类型意识

规则报告
偏好 - 真实 - 存在检查与真相调查等同的虚无比较
最大解释范围字会翻译过多的文件
最大投影范围文件重复对象预测
无可原谅的可验证结果验证结果呼叫器无需验证即可构建
无呼叫者强制-变量接收类不执行的呼叫方检查
无重复值组拼出多个地方的文字值组
无重复价值政策多个文件中相同的文字测试和结果
无程序值分配包含自身控制流的字面值分支
无外部变量行为在已知所有人之外建造的可变表述
无重复选择手持者重复测试 他们的兄弟选择器已经做了
无重复的转换几处相同的转换
不再重复的留守检查存在检查一个叫做函数已经做了
无事实 - 外部所有者某类型在所有人之外确定的值的事实
无嵌入式翻译读入周围状态而不是投影的可变字段
无分裂结果成果分为可选成果领域或不同价值
无超宽型预置拒绝其申报目标许可值的上游类型
不回头看查找指定大多数字面值并给其余一个常数
没有扩大的工会string 参数和结果与隐藏工会的文字相比较
无隔开加载只因较早的大小或密钥检查而持有的条目断言
无违约的外部所有者读者在所有者之外重复或相矛盾的可选属性默认值
无分离键地图值,其方法被赋予其存储在
无丢失写入字段和元素在读取前被替换
无延迟进入输入本地收藏只保留一个循环
无内线扫描径向排放值,按国家计算
无衍生物-外部所有者由拥有者以外的几个读者以同样方式从财产中计算值

max-held-context 允许 else if 链和 no-else-if ; 提前返回既满足两个条件.

类型意识设置和限制

  • 键入规则分析属于 TypeScript 7 兼容的文件 tsconfig.json 已安装依赖性的项目。 每个工程外的文件, 如脚本或配置文件无 tsconfig.json 包括,只获得语法规则。 参考项目可能需要首先建立申报产出.
  • prefer-truthy-presence-check 需求 strictNullChecks。 。 。 .
  • 运行 tsc 也: 类型错误不报告, 未解决的类型会让规则跳过检查 .
  • 使用纯度 oxlint没有 --type-aware。插件在x64和arm64上运行自己的捆绑后端,用于Linux,macOS和Windows;不需要Go. 它从每次运行开始,当只启用语法规则时,会增加约10ms.
  • 一些规则读取了整个程序,包括lint命令外的文件. 工程代码是外部每个非声明文件 node_modules; 链接的工作空间软件包计数.
  • 设置错误失败运行 。 编辑器集成( E)oxlint --lsp)不支持.

发展

见 发展指南。 。 。 .

版本与发布记录

@aetherall/aexlint 共发布 9 个版本,首次发布于 2026/10/08;过去 12 个月发布了 9 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.6.0latest2026/10/2216 天前
0.5.02026/10/1919 天前
0.4.02026/10/1919 天前
0.3.12026/10/1920 天前
0.3.02026/10/1920 天前
0.2.32026/10/0929 天前

关于 @aetherall/aexlint 的常见问题

@aetherall/aexlint 是什么?

Oxlint,语法和类型意识的可读性规则,在一个插件中.

如何安装 @aetherall/aexlint?

在项目目录运行 npm install @aetherall/aexlint,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 aexlint,可以用 npx aexlint 直接运行。

@aetherall/aexlint 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aetherall/aexlint 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@aetherall/aexlint 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aetherall/aexlint 可以商用吗?

@aetherall/aexlint 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@aetherall/aexlint 的下载量有多少?

根据 npm 官方下载统计,@aetherall/aexlint 在 2026/10/05 – 2026/11/03 这 30 天内被下载 1,933 次,日均约 64 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aetherall/aexlint 还在维护吗?

最新版本 0.6.0 发布于 2026/10/22(16 天前);至今共发布 9 个版本,其中过去 12 个月发布了 9 个;首次发布于 2026/10/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。