# @duyquangnvx/harness 中文文档

规范地址：https://npmcn.com/package/%40duyquangnvx/harness/

版本：0\.6\.3
npm 元数据更新时间：2026-11-08T15:53:42.456Z
中文译文更新时间：2026-11-13T01:00:17.913Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40duyquangnvx/harness
原文对照：https://npmcn.com/package/%40duyquangnvx/harness/?lang=original

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

- 包体积（解压后）：134 kB，82 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22\.18\.0
- 运行依赖：0 个
- peer 依赖：lefthook ^2\.0\.0，typescript \>=7\.0\.2，@biomejs/biome ^2\.0\.0
- 首次发布：2026-10-16T04:25:02.013Z
- 最新版本发布：2026-11-08T15:53:42.311Z
- 近 30 天下载量：3921（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：18（近 12 个月 18 个）

## 中文简介

共享 repo 配置: Biome, tsconfig, 左上角和 Ruff 预设以及 Claude Code 的 lint- on-edit 钩子

## 安装

```sh
npm install @duyquangnvx/harness
```

也可以使用：`pnpm add @duyquangnvx/harness`、`yarn add @duyquangnvx/harness`、`bun add @duyquangnvx/harness`

## README

# @ duyquangnvx/ 痛苦

共享重播配置: Biome, tsconfig, lefthook and Ruff 预设和克洛德代码的lint-on-edit钩. Repo 扩展了预设, 并保留了自己文件中的覆盖; 包的 `harness` 命令设置,检查并升级. 发布软件包的回放 [`@duyquangnvx/release`](https://github.com/duyquangnvx/release#readme)。 。 。 .

| 文件 | 这是什么 | 一个回扣用它作为 |
| --- | --- | --- |
| `biome.preset.json` | 材料和机械规则: `any`, (中文(简体) ), `!`, (中文(简体) ), `enum`, (中文(简体) ), `console`,嵌入式三角形,复杂度,文件长度,详尽无遗的开关 | `"extends": ["@duyquangnvx/harness/biome"]` |
| `tsconfig.strict.json` | `strict` 加上它不给的支票 | `"extends": ["@duyquangnvx/harness/tsconfig.strict.json"]` |
| `lefthook.yml` | 承诺前:Biome在已上演的文件中,然后 `tsc --noEmit`,两者来自 `node_modules/.bin` 在任何软件包管理器下 | `extends: [node_modules/@duyquangnvx/harness/lefthook.yml]` |
| `ruff.toml` | Python 行长和规则选择 | `extend = "node_modules/@duyquangnvx/harness/ruff.toml"` |
| `lint-on-edit.mjs` | 克劳德代码 `PostToolUse` 钩子:格式和指针 每个编辑的文件, 退出2手 剩下的Claude。 仅在 Repo 安装时运行 Biome, 仅在 Ruff 配置存在时运行 | 下面的命令 |

Biome预设是平的,因为一个文件Biome扩展不能再扩展另一个. 生化取光谱,没有 `.json`。 。 。 .

## 这个 `harness` 命令

| 命令 | 它会做什么 |
| --- | --- |
| `init` | 设置重播 : [下级](https://npmcn.com/package/%40duyquangnvx/harness/#readme-set-up-a-repo) |
| `doctor [--json]` | 说,改变什么, 它运行的git repo是什么 和这个机器缺少或有后面, 每个有命令或线 修复它。 Repo:在npmjs上对最近的包,Biome在版本的包针上,每个配置扩展其预设,林特钩,左上钩,一个 `AGENTS.md` (单位:千美元) `CLAUDE.md` 进口它, 和旧的复制 - 任何东西都留下。 机器:规则链接在 `~/.claude/rules/harness`,则 `duyquangnvx` 插件, 和Matt在标记此软件包名称时的技能 |
| `context [--json]` | 说,改变什么, 克劳德代码在启动时在它运行的文件夹中加载什么, 并有一个粗略的符号数: 指令文件及其导入,规则(那些带有 `paths:` 技术和副剂说明 `~/.claude`, (中文(简体) ), `.claude` 并启用插件。 它命名了两个已装入的文件, 以及从 repo 根上方装入的任何文件([ADR 0010 (英语)](https://npmcn.com/package/%40duyquangnvx/docs/adr/0010-one-home-per-fact-agents-read.md)(中文(简体) ) |
| `upgrade` | 添加数 `@duyquangnvx/harness@latest` 与Repo的软件包管理器,将Biome设定到它所标注的版本,并打印所改变的东西. Python 唯一回波运行 `npx @duyquangnvx/harness@latest upgrade`,它再次复制了钩子和 Ruff 配置;当运行的软件包落后于 npmjs 上的最新数据时,它拒绝 |

运行它 `npx @duyquangnvx/harness <command>` 在安装软件包之前,然后通过软件包管理器(`pnpm exec harness doctor`) (中文(简体) ). `init` 财务报告和审定财务报表 `upgrade` 拒绝写入未承诺的更改. `harness <command> --help` 有细节.

| 退出 | 含义 |
| --- | --- |
| `0` | 没什么好修的 |
| `1` | 使用错误 |
| `2` | 用于在 repo 或 机器 中修复的东西, 输出名称 |
| `70` | 错误 |

## 设置回购

```sh
npx @duyquangnvx/harness init
```

在一次追债中 `package.json` 和一个锁文件, `init` 添加软件包和工具其预设运行到 `devDependencies` 使用软件包管理器锁定文件名称, 制作 `lefthook install` 页:1 `prepare` 没有脚本时, 请拒绝左上角安装脚本为 [下级](https://npmcn.com/package/%40duyquangnvx/harness/#readme-git-hooks-under-npm-12-and-pnpm-11),在下面的配置缺失时写出,并将钩子添加到 `.claude/settings.json`,指向一个开着旧副本的钩子 `.claude/hooks/lint-on-edit.mjs` 放在包裹里 无类型脚本的重播( 无) `tsconfig.json`,没有 `typescript` 软件包和无 `.ts` file git sees) 获得的既不是 `typescript` 也没有 `tsconfig.json`,以及 `doctor` 不要求一个 `tsconfig.json`。它从不重写 repo 已有的文件: 它打印文件需要的行并退出 2 .

在每一次重播中, Python -Only, `init` 写入 `AGENTS.md` 持有 `## Project status` (绿地默认)和占位符 `## Commands`, (中文(简体) ), `## Coding standards` 财务报告和审定财务报表 `## Agent skills` 各节,每节只写一个注释,说明属于何处,以及 `CLAUDE.md` 仅持有 `@AGENTS.md`,所以克劳德代码 和其他特工读一个文件。 A 类 `CLAUDE.md` 和它自己的内容 获得如何移动 `AGENTS.md`。 。 。 . `doctor` 检查一下 `AGENTS.md` 它只持有一个特工自己找不到的东西 所以命令 `package.json` 或读取器已经放弃.

通过手,同样的设置是:

```sh
pnpm add -D @duyquangnvx/harness lefthook typescript
pnpm add -D --save-exact @biomejs/biome@2.6.2
```

`biome.json`中,在 `extends`数字 :

```jsonc
{
  "$schema": "https://biomejs.dev/schemas/2.6.2/schema.json",
  "extends": ["@duyquangnvx/harness/biome"]
}
```

`tsconfig.json`,在带有类型脚本的重播中:添加 `"extends": ["@duyquangnvx/harness/tsconfig.strict.json"]`。 。 。 .

`lefthook.yml`。任务按名称合并,如果两个文件都设置了密钥,则包的值将获得胜利,所以Repo会添加自己的任务,或者密钥,例如 `root`,除了包裹的:

```yaml
extends:
  - node_modules/@duyquangnvx/harness/lefthook.yml
```

工作运行工具 从repo's `node_modules/.bin`,所以预设在 npm 和 pnpm 下工作,从不获取缺失的工具. `pnpm exec` 在 npm repo 中失败,并且 `npx` 增加约半秒的工作,解决登记册上一个缺失的名字.

`.claude/settings.json`;在第一个安装包丢失之前,然后钩子退出 0:

```json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "f=\"$CLAUDE_PROJECT_DIR/node_modules/@duyquangnvx/harness/lint-on-edit.mjs\"; [ -f \"$f\" ] || exit 0; node \"$f\""
          }
        ]
      }
    ]
  }
}
```

旁边有 Python 的重播 `package.json`数字 : `ruff.toml` 持有 `extend` 线条上。 仅限Python的回放,无 `package.json`没有 `node_modules`显示 : `init` 复制钩子到 `.claude/hooks/lint-on-edit.mjs` 此配置为 `.claude/harness.ruff.toml`,添加 `node "$CLAUDE_PROJECT_DIR/.claude/hooks/lint-on-edit.mjs"` 作为钩入 `.claude/settings.json`,并撰写 `ruff.toml` 持有 `extend = ".claude/harness.ruff.toml"` 当雷波没有 Ruff 配置时; a `ruff.toml`, (中文(简体) ), `.ruff.toml` 或者说 `pyproject.toml` `[tool.ruff]` 它自己得到的行 代替打印.

## 在npm 12和pnpm 11下的基特钩

两个左撇子的 `postinstall`,这是用来安装 gi钩。 由npm 12.2.0,pnpm 11.8.0和左旋 2.2.2

-   npm 12 安装软件包但离开 `.git/hooks` 空出,警告脚本"没有被允许的脚本所覆盖".
-   pnpm 11 安装失败(`ERR_PNPM_IGNORED_BUILDS`,退出 1 ,直到允许或拒绝建造.
-   左旋二进制来自平台可选依赖性,运行时没有 `postinstall`。 。 。 .

因此repo安装了钩子本身,并否认了"左克"的脚本,在两者下都有效:

-   `package.json`数字 : `"scripts": { "prepare": "lefthook install" }`,并在 npm 下 `"allowScripts": { "lefthook": false }`。 。 。 .
-   时间 : `pnpm-workspace.yaml` 持有 `allowBuilds:` 与 `lefthook: false`。 。 。 .

`lefthook install`,以及 `lefthook run`,它首先同步了钩子,然后写到 repo 共享 `.git/hooks`:安装在任何工作树上,为所有人安装钩子.

一个 pnpm repo 也列出 `'@duyquangnvx/harness'` 下级 `minimumReleaseAgeExclude` 内 `pnpm-workspace.yaml`这样 `upgrade` 安装发售日,而不是一天后.

## 释放此软件包

它从这个文件夹中发布 [`@duyquangnvx/release`](https://github.com/duyquangnvx/release#readme). 对已建成的 `dist/`数字 : `pnpm test` 先盖起.

## 常见问题

### @duyquangnvx/harness 是什么？

共享 repo 配置: Biome, tsconfig, 左上角和 Ruff 预设以及 Claude Code 的 lint- on-edit 钩子

### 如何安装 @duyquangnvx/harness？

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

### @duyquangnvx/harness 支持 TypeScript 吗？

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

### @duyquangnvx/harness 支持 ESM 还是 CommonJS？

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

### @duyquangnvx/harness 需要什么版本的 Node\.js？

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

### @duyquangnvx/harness 可以商用吗？

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

### @duyquangnvx/harness 的下载量有多少？

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

### @duyquangnvx/harness 还在维护吗？

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

