# @aetherall/aexlint 中文文档

规范地址：https://npmcn.com/package/%40aetherall/aexlint/

版本：0\.6\.0
npm 元数据更新时间：2026-10-22T15:39:44.216Z
中文译文更新时间：2026-11-08T01:41:28.657Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aetherall/aexlint
原文对照：https://npmcn.com/package/%40aetherall/aexlint/?lang=original
项目主页：https://github.com/Aetherall/aexlint#readme
源码仓库：https://github.com/Aetherall/aexlint

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：142 MB，89 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24\.0\.0
- 运行依赖：2 个
- 首次发布：2026-10-07T16:43:37.303Z
- 最新版本发布：2026-10-22T15:39:43.820Z
- 近 30 天下载量：1933（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：9（近 12 个月 9 个）

## 中文简介

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

## 安装

```sh
npm install @aetherall/aexlint
```

也可以使用：`pnpm add @aetherall/aexlint`、`yarn add @aetherall/aexlint`、`bun add @aetherall/aexlint`

## README

# 缩写

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

## 独立的CLI

需要节点.js 24+.

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

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

| 规则 | 限制 |
| --- | --- |
| `max-expression-depth` | 3个 |
| `max-expression-complexity` | 页:1 |
| `max-decision-depth` | 2个 |
| `max-held-context` | 3个 |
| `max-call-assembly` | 宽度 60, 3 个外部名称 |
| `max-interpretation-spread` | 页:1 |
| `max-projection-spread` | 2个 |
| `no-fact-outside-owner` | 页:1 |
| `no-default-outside-owner` | 1个 |
| `no-derivation-outside-owner` | 2个 |

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

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

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

### 逐步采用承诺的基准

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

```sh
aexlint check --typed --write-baseline .aexlint-baseline
```

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

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

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

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

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

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

```sh
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.

```sh
pnpm add -D oxlint@1.83.0 @aetherall/aexlint
```

`.oxlintrc.json`数字 :

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

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

## 规则

### 语法

| 规则 | 报告 |
| --- | --- |
| [最大表达深度](https://npmcn.com/package/%40aetherall/aexlint/rules/max-expression-depth/README.md) | 紧闭的电话 |
| [最大表达式复杂度](https://npmcn.com/package/%40aetherall/aexlint/rules/max-expression-complexity/README.md) | 在一个表达式内工作 |
| [最大决定深度](https://npmcn.com/package/%40aetherall/aexlint/rules/max-decision-depth/README.md) | 嵌入逻辑组和三角形 |
| [最大调用组装](https://npmcn.com/package/%40aetherall/aexlint/rules/max-call-assembly/README.md) | 使用许多外部名称的大调 |
| [最大持有的文本](https://npmcn.com/package/%40aetherall/aexlint/rules/max-held-context/README.md) | 关闭决定、循环和召回 |
| [没有,如果](https://npmcn.com/package/%40aetherall/aexlint/rules/no-else-if/README.md) | `else if` 链条 |
| [无多线条件](https://npmcn.com/package/%40aetherall/aexlint/rules/no-multiline-condition/README.md) | 跨越多行的条件 |
| [无位置分隔符](https://npmcn.com/package/%40aetherall/aexlint/rules/no-positional-separator/README.md) | 由通行证位置而不是在棋子之间放置分离器 |
| [偏好域预览](https://npmcn.com/package/%40aetherall/aexlint/rules/prefer-domain-predicate/README.md) | 从几个检查中构建的无名分类 |

### 类型意识

| 规则 | 报告 |
| --- | --- |
| [偏好 - 真实 - 存在检查](https://npmcn.com/package/%40aetherall/aexlint/rules/prefer-truthy-presence-check/README.md) | 与真相调查等同的虚无比较 |
| [最大解释范围](https://npmcn.com/package/%40aetherall/aexlint/rules/max-interpretation-spread/README.md) | 字会翻译过多的文件 |
| [最大投影范围](https://npmcn.com/package/%40aetherall/aexlint/rules/max-projection-spread/README.md) | 文件重复对象预测 |
| [无可原谅的可验证结果](https://npmcn.com/package/%40aetherall/aexlint/rules/no-forgeable-validated-result/README.md) | 验证结果呼叫器无需验证即可构建 |
| [无呼叫者强制-变量](https://npmcn.com/package/%40aetherall/aexlint/rules/no-caller-enforced-invariant/README.md) | 接收类不执行的呼叫方检查 |
| [无重复值组](https://npmcn.com/package/%40aetherall/aexlint/rules/no-repeated-value-group/README.md) | 拼出多个地方的文字值组 |
| [无重复价值政策](https://npmcn.com/package/%40aetherall/aexlint/rules/no-repeated-value-policy/README.md) | 多个文件中相同的文字测试和结果 |
| [无程序值分配](https://npmcn.com/package/%40aetherall/aexlint/rules/no-procedural-value-dispatch/README.md) | 包含自身控制流的字面值分支 |
| [无外部变量行为](https://npmcn.com/package/%40aetherall/aexlint/rules/no-external-variant-behavior/README.md) | 在已知所有人之外建造的可变表述 |
| [无重复选择](https://npmcn.com/package/%40aetherall/aexlint/rules/no-repeated-selection/README.md) | 手持者重复测试 他们的兄弟选择器已经做了 |
| [无重复的转换](https://npmcn.com/package/%40aetherall/aexlint/rules/no-repeated-conversion/README.md) | 几处相同的转换 |
| [不再重复的留守检查](https://npmcn.com/package/%40aetherall/aexlint/rules/no-repeated-presence-check/README.md) | 存在检查一个叫做函数已经做了 |
| [无事实 - 外部所有者](https://npmcn.com/package/%40aetherall/aexlint/rules/no-fact-outside-owner/README.md) | 某类型在所有人之外确定的值的事实 |
| [无嵌入式翻译](https://npmcn.com/package/%40aetherall/aexlint/rules/no-embedded-translation/README.md) | 读入周围状态而不是投影的可变字段 |
| [无分裂结果](https://npmcn.com/package/%40aetherall/aexlint/rules/no-split-result/README.md) | 成果分为可选成果领域或不同价值 |
| [无超宽型预置](https://npmcn.com/package/%40aetherall/aexlint/rules/no-overbroad-type-predicate/README.md) | 拒绝其申报目标许可值的上游类型 |
| [不回头看](https://npmcn.com/package/%40aetherall/aexlint/rules/no-lookup-fallback/README.md) | 查找指定大多数字面值并给其余一个常数 |
| [没有扩大的工会](https://npmcn.com/package/%40aetherall/aexlint/rules/no-widened-union/README.md) | `string` 参数和结果与隐藏工会的文字相比较 |
| [无隔开加载](https://npmcn.com/package/%40aetherall/aexlint/rules/no-detached-assertion/README.md) | 只因较早的大小或密钥检查而持有的条目断言 |
| [无违约的外部所有者](https://npmcn.com/package/%40aetherall/aexlint/rules/no-default-outside-owner/README.md) | 读者在所有者之外重复或相矛盾的可选属性默认值 |
| [无分离键](https://npmcn.com/package/%40aetherall/aexlint/rules/no-detached-key/README.md) | 地图值,其方法被赋予其存储在 |
| [无丢失写入](https://npmcn.com/package/%40aetherall/aexlint/rules/no-lost-write/README.md) | 字段和元素在读取前被替换 |
| [无延迟进入](https://npmcn.com/package/%40aetherall/aexlint/rules/no-deferred-entry/README.md) | 输入本地收藏只保留一个循环 |
| [无内线扫描](https://npmcn.com/package/%40aetherall/aexlint/rules/no-inline-scan/README.md) | 径向排放值,按国家计算 |
| [无衍生物-外部所有者](https://npmcn.com/package/%40aetherall/aexlint/rules/no-derivation-outside-owner/README.md) | 由拥有者以外的几个读者以同样方式从财产中计算值 |

`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`)不支持.

## 发展

见 [发展指南](https://github.com/Aetherall/aexlint/blob/master/docs/development.md)。 。 。 .

## 常见问题

### @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 和提交记录判断。

