# @alxwlw/repo-rules 中文文档

规范地址：https://npmcn.com/package/%40alxwlw/repo-rules/

版本：1\.9\.2
npm 元数据更新时间：2026-11-04T15:03:15.786Z
中文译文更新时间：2026-11-06T18:39:55.637Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：44.1 kB，13 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=20
- 运行依赖：0 个
- 首次发布：2026-10-12T15:30:12.684Z
- 最新版本发布：2026-11-04T15:03:15.179Z
- 近 30 天下载量：2462（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：10（近 12 个月 10 个）

## 中文简介

从alxwlw缺陷检查官身上得到的全repo规则——长的文件,不合理的压制,跳出/聚焦测试,(x)QQ,去掉的断言——只有收缩基线.

## 安装

```sh
npm install @alxwlw/repo-rules
```

也可以使用：`pnpm add @alxwlw/repo-rules`、`yarn add @alxwlw/repo-rules`、`bun add @alxwlw/repo-rules`

## README

# @alxwlw/repo规则

从一个缺陷检查中得出的全库检查:每个缺陷都是一类缺陷,已经花费了一轮审查。 他们在CI和本地运行,在20号节点运行,没有依赖性.

```bash
pnpm add -D @alxwlw/repo-rules
pnpm exec repo-rules baseline --init   # once: record what is already there
pnpm exec repo-rules check             # every run: nothing new, nothing stale
pnpm exec repo-rules diff --base origin/main
```

```
repo-rules [-C <dir>] check [--json]
repo-rules [-C <dir>] diff [--base <ref>] [--json]
repo-rules [-C <dir>] baseline [--init] [--allow-grow]
```

`-C <dir>` 运行在目录中(存储库内的任何位置). `--json` 指纹 `{ violations, stale, notes }` 而不是文本行. `--help` 打印用法; 缺少或未知的命令打印到 stderr 和 出道 2 上.

## 规则

| 规则 | 旗帜 |
| --- | --- |
| `max-lines` | 一个800行以上的跟踪文本文件(计划、锁文件、JSON、快照、生成和销售文件除外) |
| `suppression-reason` | `eslint-disable*` 编号 : `oxlint-disable*` 编号 : `solhint-disable*` 无 `-- reason`· ; `@ts-expect-error` 编号 : `@ts-ignore` 而不附带文字; `biome-ignore` 后面没有文本 `:`; 蟒蛇 `# noqa` 编号 : `# type: ignore` 无 `-- reason` |
| `focused-skipped-tests` | 在JS/TS测试文件中: `.only(` 在任意一行上(扫描以行为主,见"限制"); `.skip(` 编号 : `.todo(` 编号 : `xit(` 编号 : `xdescribe(` 编号 : `xtest(` 无 `-- reason` 上行或上行评论. `.skipIf` 编号 : `.runIf` 和剧作家 `test.skip(condition, reason)` 没事 |
| `number-or-default` | 在未测试的JS/TS文件中: `Number(…)`, (中文(简体) ), `Number.parseInt(…)`, (中文(简体) ), `Number.parseFloat(…)`, (中文(简体) ), `parseInt(…)`, (中文(简体) ), `parseFloat(…)` 接下来是 `|| <non-zero literal>`: 一个真实的 0 默默成为默认值 |
| `removed-assertions` (单位:千美元)`diff`(中文(简体) ) | 测试文件, diff 删除更多 `expect(` 编号 : `assert…` (c) 评论中的断言既不被删除也不被添加(评论确认: `//`, (中文(简体) ), `/* … */` 在线上,一条线从 `*`· ; `#` 在 Python; 未关闭 `/*` 和从 `*` 隐藏该行的其余部分,包括后面的代码 `*/`) (中文(简体) ). `exclude` (单位:千美元)`*` 或者说 `removed-assertions`适用。 A 类 `Tests-Removed: <reason>` 在射程内装拖车 |

原因至少有三个非空格字符.

## 基线

`.repo-rules-baseline.json` 记录已经存在的违规情况:每长文件行数,为其他规则按每个文件计数. `check` 当一个文件翻过其条目时失败, 以及当一个条目高于现实( stale)时, 因此一个固定位置不能被新位置重用 . `baseline` 只降低条目; 提高一个需要 `--allow-grow`显示在 PR diff 中.

## 配置

可选 `.repo-rules.json`数字 :

```json
{
    "maxLines": 800,
    "exclude": { "*": ["public/vendor/**"], "max-lines": ["docs/*.html"] },
    "testGlobs": [
        "**/*.{test,spec}.*",
        "**/__tests__/**",
        "**/test/**",
        "**/tests/**",
        "**/*.t.sol",
        "**/test_*.py",
        "**/*_test.py"
    ]
}
```

`testGlobs` 替换上面全部显示的默认列表;不添加. `exclude` 带 `*` 或规则名称——上述四项规则和 `removed-assertions`。 。 。 .

## 限制

-   评论由一行heuristic,而不是一行解析器找到:regex文字或JSX文本中的引文可以在后一行隐藏指令.
-   `<!-- -->` 注释 `.vue` 财务报告和审定财务报表 `.svelte` 文件不读取.
-   `number-or-default` 错过 `|| .5`,则a `||=` 默认应用到持有一个变量的变量 `Number(…)` 结果.
-   `removed-assertions` 不看到一个没有内容更改的重命名所禁用的测试( 例如) `a.test.ts` → `a.test.ts.off`) (中文(简体) ).
-   `removed-assertions` 在多行内读取一行 `/* … */` 块,不以 `*` (例如重新缩进的)作为代码.
-   请求移入已删除的助手数 `Tests-Removed` 拖车是出路.
-   扫描以行为主,不知道行是坐在字符串内还是模板字面,所以 `.only(` 或者说 `.skip(` 在固定字符串中标出标记.

## 中情局

```yaml
- uses: actions/checkout@v5
  with:
    fetch-depth: 0 # diff needs the merge-base
- run: pnpm exec repo-rules check
- run: pnpm exec repo-rules diff # base = origin/$GITHUB_BASE_REF in a pull_request job, skipped otherwise
```

出站代码:0 clean, 1 违规或 Stale 基线, 2 出站错误(从未读作干净).

## 常见问题

### @alxwlw/repo-rules 是什么？

从alxwlw缺陷检查官身上得到的全repo规则——长的文件,不合理的压制,跳出/聚焦测试,\(x\)QQ,去掉的断言——只有收缩基线\.

### 如何安装 @alxwlw/repo-rules？

在项目目录运行 npm install @alxwlw/repo-rules，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 repo-rules，可以用 npx repo-rules 直接运行。

### @alxwlw/repo-rules 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/alxwlw\_\_repo-rules 是否存在。

### @alxwlw/repo-rules 支持 ESM 还是 CommonJS？

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

### @alxwlw/repo-rules 需要什么版本的 Node\.js？

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

### @alxwlw/repo-rules 可以商用吗？

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

### @alxwlw/repo-rules 的下载量有多少？

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

### @alxwlw/repo-rules 还在维护吗？

最新版本 1\.9\.2 发布于 2026/11/04（3 天前）；至今共发布 10 个版本，其中过去 12 个月发布了 10 个；首次发布于 2026/10/12。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

