这个项目能做什么
jsdiff 是一个基于 Myers O(ND) 差异算法的 JavaScript 文本差异比较库。它提供了一套全面的 API,用于在多个粒度上比较文本:
- **字符级差异比较**(`diffChars`):将每个 Unicode 码点视为一个标记,并可选进行不区分大小写的比较。
- **单词级差异比较**(`diffWords`、`diffWordsWithSpace`):将单词和标点视为标记,并可选支持 `Intl.Segmenter`,以实现更好的非英语单词分词。
- **行级差异比较**(`diffLines`):将每一行视为一个标记,并提供忽略空白、处理行尾 CR 字符以及将换行符视为独立标记的选项。
- **句子级差异比较**(`diffSentences`):将句子和句子间空白视为标记。
- **CSS 差异比较**(`diffCss`):比较 CSS 标记。
- **JSON 差异比较**(`diffJson`):将对象序列化为格式化 JSON,并按行进行差异比较,同时按字母顺序排列属性。
- **数组差异比较**(`diffArrays`):使用严格相等或自定义比较器来比较标记数组。
该库还提供补丁管理能力:
- **补丁创建**:`createPatch` 和 `createTwoFilesPatch` 生成统一差异格式补丁,并支持可配置的上下文行和头部选项。
- **结构化补丁**:`structuredPatch` 返回带有 hunk 对象的数据结构,适合程序化处理。
- **补丁应用**:`applyPatch` 和 `applyPatches` 应用统一差异补丁,支持模糊因子、自动行尾转换和自定义行比较回调。
- **补丁解析**:`parsePatch` 将统一差异格式(包括 Git 特定的扩展头部,用于重命名、复制、创建、删除和二进制文件)解析为结构化对象。
- **补丁反转**:`reversePatch` 生成反向补丁。
- **格式转换**:`convertChangesToXML` 和 `convertChangesToDMP` 将变更对象转换为 XML 或 Google 的 diff-match-patch 格式。
通用选项包括异步回调模式、最大编辑长度限制、超时支持以及每个标记的变更对象粒度。该库还通过 `Diff` 类支持自定义差异比较行为,允许用户覆盖输入转换、分词、空标记移除、相等性检查和连接函数。
该库可通过 npm 获取(`npm install diff`),并支持 ESM 和 CommonJS 导入,也可通过 `dist/diff.js` 直接在浏览器中使用。
评论
0 评分人数达到10人后显示
登录后参与讨论。