# @cocalc/diff-match-patch 中文文档

规范地址：https://npmcn.com/package/%40cocalc/diff-match-patch/

版本：1\.1\.1
npm 元数据更新时间：2026-10-23T18:22:29.899Z
中文译文更新时间：2026-11-10T05:11:05.714Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40cocalc/diff-match-patch
原文对照：https://npmcn.com/package/%40cocalc/diff-match-patch/?lang=original
项目主页：https://github.com/sagemathinc/diff-match-patch#readme
源码仓库：https://github.com/sagemathinc/diff-match-patch

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

- 包体积（解压后）：207 kB，42 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2025-10-07T17:21:33.389Z
- 最新版本发布：2026-10-23T18:22:29.491Z
- 近 30 天下载量：2772（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 2 个）

## 中文简介

Diff-Match-Patch 在排字符中包含完整的预算和代理配对支持

## 安装

```sh
npm install @cocalc/diff-match-patch
```

也可以使用：`pnpm add @cocalc/diff-match-patch`、`yarn add @cocalc/diff-match-patch`、`bun add @cocalc/diff-match-patch`

## README

# Diff-Match-Patch 以 Typescript 和 完全预算及代理配对支持进行

已制作 Javascript diff- match- patch **适用于生产**数字 :

-   **现代打字符** 单位测试,由于 [diff- match- patch- type 标记](https://github.com/nonoroazoro/diff-match-patch-typescript)。 。 。 .
-   满 **单码支持**,感谢 [80卢比](https://github.com/google/diff-match-patch/pull/80/files)
-   我又说 **完整 diff 超时支持**,它只在别处部分执行,并且对生产使用至关重要(否则您的服务器或浏览器可以很容易地被卡入到百分百的分量上,几分钟)。 见 [大的. test.ts (英语)](https://npmcn.com/package/%40cocalc/diff-match-patch/tests/big/big.test.ts)。 。 。 .
-   A 类 **确定性工作预算** (单位:千美元)`diffWorkLimit`,或一个 `DiffWorkBudget` 换成时钟 默认关闭;没有它,结果就等于1.0.1。 见 [工作预算. test.ts](https://npmcn.com/package/%40cocalc/diff-match-patch/tests/core/work-budget.test.ts)。用它来:
    -   **合同:** `diffWorkLimit` 将抽象的、 充电的算法步骤限制在 `diff_main` 和清理(等等) `patch_make`iff和 `patch_apply`模糊的 diffs: 最多 `diffWorkLimit + BUDGET_STEP_UNITS × (n + 2)` 单位,其中 `n` 是调用文本的长度(以清理其文本)和 `BUDGET_STEP_UNITS` 24岁。 单位跟踪算法检查和复制的字符,并跟踪其移动的diff. 发动机级别的工作不是调制的: 串接和平整, `===`,语义分数的正则表达式,数组读取和写出,而行编码的散列. 它的成本可能因引擎而异,因此这些单位绑定了算法的步骤,而不是总的CPU.
    -   **怎样:** 每一步要么先付工钱(如果预算无法支付的话, 所以充电单位是极限加分 最多一步。 一个预算由一个呼叫所做的一切来分担,而时钟从不被读取.
    -   **未覆盖 :** `patch_make`组装及其上下文搜索`patch_addContext_`,每个补丁O(N)不在预算范围之内,因此 `patch_apply`' 匹配( e)`match_main`) (中文(简体) ). 预算约束了diff,不是所有 `patch_make`。 。 。 .
    -   **速度 :** 在AMD EMYC 7B13核心上的V8(节点)上,大约135,000到180,000个单元需要一毫秒,所以 `diffWorkLimit: 25_000_000` 是关于 `diffTimeout: 0.2` 在这里。 这一数字是在那里校准和测量的,没有保证,也不是合同的一部分.
-   **现代 API** 用于创建 dmp 对象(仍然向后兼容).

## 安装

```sh
pnpm i @cocalc/diff-match-patch
```

```ts
import { DiffMatchPatch } from "@cocalc/diff-match-patch";
const dmp = new DiffMatchPatch({ diffTimeout: 0.5 });
const patch = dmp.patch_make("ello", "hello world");
console.log(JSON.stringify(patch));
// [{"diffs":[[1,"h"],[0,"ello"],[1," world"]],"start1":0,"start2":0,"length1":4,"length2":11}]
dmp.patch_apply(patch, "ello");
// [ 'hello world', [ true ] ]
```

## 文档

[官方仓库](https://github.com/sagemathinc/diff-match-patch)。 。 。 .

## 常见问题

### @cocalc/diff-match-patch 是什么？

Diff-Match-Patch 在排字符中包含完整的预算和代理配对支持

### 如何安装 @cocalc/diff-match-patch？

在项目目录运行 npm install @cocalc/diff-match-patch，或使用 pnpm add / yarn add / bun add。

### @cocalc/diff-match-patch 支持 TypeScript 吗？

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

### @cocalc/diff-match-patch 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @cocalc/diff-match-patch 可以商用吗？

@cocalc/diff-match-patch 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @cocalc/diff-match-patch 的下载量有多少？

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

### @cocalc/diff-match-patch 还在维护吗？

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

