gitbook 入门教程之比较代码块差异 diff 插件
在 markdown 文档中显示代码之间的差异的 Gitbook 插件
主页
- Github : https://snowdreams1006.github.io/gitbook-plugin-diff/
- GitLab: https://snowdreams1006.gitlab.io/gitbook-plugin-diff/
- Gitee : https://snowdreams1006.gitee.io/gitbook-plugin-diff/
屏幕截图
- 用法
{% diff method="diffJson" %}
```json
{
"name": "gitbook-plugin-simple-mind-map",
"version": "0.2.1",
"description": "A gitBook plugin for generating and exporting mind map within markdown"
}
```
```json
{
"name": "gitbook-plugin-diff",
"version": "0.2.1",
"description": "A gitbook plugin for showing the differences between the codes within markdown"
}
```
{% enddiff %}
- 预览
{
- "description": "A gitBook plugin for generating and exporting mind map within markdown",
- "name": "gitbook-plugin-simple-mind-map",
+ "description": "A gitbook plugin for showing the differences between the codes within markdown",
+ "name": "gitbook-plugin-diff",
"version": "0.2.1"
}
用法
步骤#1-更新 book.json 文件
在您的 gitbook 的 book.json 文件中,将 diff 添加到 plugins 列表中.
这是最简单的示例:
{
"plugins": ["diff"]
}
此外,受支持的配置选项如下:
"gitbook": {
"properties": {
"method": {
"type": "string",
"title": "jsdiff api method",
"required": false,
"default": "diffLines",
"description": "some supported methods such as diffChars or diffWords or diffWordsWithSpace or diffLines or diffTrimmedLines or diffSentences or diffCss or diffJson or diffArrays"
},
"options": {
"type": "object",
"title": "jsdiff api options",
"required": false,
"description": "some methods may not support options"
}
}
}
步骤#2- 使用 markdown 语法
diff 插件支持 method 和 options 等选项生成差异代码块.
这是在 markdown 文件中基本使用语法:
{% diff %}
```
old code
```
```
new code
```
{% enddiff %}
下面有一些基本示例:
Diff.diffChars(oldStr, newStr[, options])
区分两个文本块,逐个字符比较。
返回
返回更改对象列表(请参见下文)。
选项
ignoreCase:true忽略大小写差异。默认为false。
示例
- 用法
设置
method="diffChars"以调用Diff.diffChars(oldStr, newStr[, options])方法
{% diff method="diffChars" %}
```js
cat
```
```js
cap
```
{% enddiff %}
- 预览
ca
- t
+ p
Diff.diffWords(oldStr, newStr[, options])
区分两个文本块,逐字比较,忽略空格。
返回
返回更改对象列表(请参见下文)。
选项
ignoreCase:与diffChars相同。
示例
- 用法
设置
method="diffWords"来调用Diff.diffWords(oldStr, newStr[, options])方法
{% diff method="diffWords" %}
```bash
beep boop
```
```bash
beep boob blah
```
{% enddiff %}
- 预览
beep
- boop
+ boob
+ blah
Diff.diffWordsWithSpace(oldStr, newStr[, options])
区分两个文本块,逐字比较,将空白视为有效。
返回
返回更改对象列表(请参见下文)。
选项
ignoreCase:与diffWords相同。
示例
- 用法
设置
method="diffWordsWithSpace"以调用Diff.diffWordsWithSpace(oldStr, newStr[, options])方法
{% diff method="diffWordsWithSpace" %}
```bash
beep boop
```
```bash
beep boob blah
```
{% enddiff %}
- 预览
beep
- boop
+ boob blah
Diff.diffLines(oldStr, newStr[, options])
比较两个文本块,逐行比较。
返回
返回更改对象列表(请参见下文)。
选项
ignoreWhitespace:true忽略前导和尾随空白。这与diffTrimmedLines相同newlineIsToken:truenewlineIsToken换行符视为单独的标记。这允许换行结构的更改独立于行内容而发生,并照此处理。通常,这是diffLines更加人性化的形式,并且diffLines更适合于补丁和其他计算机友好的输出。
示例
- 用法
设置
method="diffLines"以调用Diff.diffLines(oldStr, newStr[, options])方法
{% diff method="diffLines",options={"newlineIsToken":true} %}
```bash
beep boop
the cat is palying with cap
what
```
```bash
beep boob blah
the cat is palying with cap
who
```
{% enddiff %}
- 预览
- beep boop
+ beep boob blah
the cat is palying with cap
- what
+ who
Diff.diffTrimmedLines(oldStr, newStr[, options])
区分两个文本块,逐行比较,忽略前导和尾随空格。
返回
返回更改对象列表(请参见下文)。
选项
ignoreWhitespace:与diffLines相同。newlineIsToken:同diffLines。
示例
- 用法
设置
method="diffTrimmedLines"来调用Diff.diffTrimmedLines(oldStr, newStr[, options])方法
{% diff method="diffTrimmedLines",options={"newlineIsToken":true} %}
```bash
beep boop
the cat is palying with cap
what
```
```bash
beep boob blah
the cat is palying with cat
who
```
{% enddiff %}
- 预览
- beep boop
the cat is palying with cap
what
+ beep boob blah
the cat is palying with cat
who
Diff.diffSentences(oldStr, newStr[, options])
区分两个文本块,逐句比较。
返回
返回更改对象列表(请参见下文)。
示例
- 用法
设置
method="diffSentences"来调用Diff.diffSentences(oldStr, newStr[, options])方法
{% diff method="diffSentences" %}
```bash
beep boop
the cat is palying with cap
what
```
```bash
beep boob blah
the cat is palying with cat
who
```
{% enddiff %}
- 预览
- beep boop
the cat is palying with cap
what
+ beep boob blah
the cat is palying with cat
who
Diff.diffCss(oldStr, newStr[, options])
比较两个文本块,比较 CSS 标记。
返回
返回更改对象列表(请参见下文)。
示例
- 用法
设置
method="diffCss"来调用Diff.diffCss(oldStr, newStr[, options])方法
{% diff method="diffCss" %}
```css
.markdown-section h1, .markdown-section h2, .markdown-section h3, .markdown-section h4, .markdown-section h5, .markdown-section h6 {
margin-top: 1.275em;
margin-bottom: .85em;
font-weight: 700;
}
```
```css
.markdown-section h1, .markdown-section h2, .markdown-section h3, .markdown-section h4, .markdown-section h5, .markdown-section h6 {
margin-top: 1.5em;
margin-bottom: 1em;
}
```
{% enddiff %}
- 预览
.markdown-section h1, .markdown-section h2, .markdown-section h3, .markdown-section h4, .markdown-section h5, .markdown-section h6 {
margin-top:
- 1.275em
+ 1.5em
;
margin-bottom:
- .85em
+ 1em
;
-
font-weight: 700;
}
Diff.diffJson(oldObj, newObj[, options])
比较两个 JSON 对象,比较每个对象上定义的字段。在此比较中,字段的顺序等并不重要。
返回
返回更改对象列表(请参见下文)。
示例
- 用法
设置
method="diffJson"来调用Diff.diffJson(oldObj, newObj[, options])方法
{% diff method="diffJson" %}
```json
{
"name": "gitbook-plugin-simple-mind-map",
"version": "0.2.1",
"description": "A gitBook plugin for generating and exporting mind map within markdown"
}
```
```json
{
"name": "gitbook-plugin-diff",
"version": "0.2.1",
"description": "A gitbook plugin for showing the differences between the codes within markdown"
}
```
{% enddiff %}
- 预览
{
- "description": "A gitBook plugin for generating and exporting mind map within markdown",
- "name": "gitbook-plugin-simple-mind-map",
+ "description": "A gitbook plugin for showing the differences between the codes within markdown",
+ "name": "gitbook-plugin-diff",
"version": "0.2.1"
}
Diff.diffArrays(oldArr, newArr[, options])
比较两个数组,比较每个项目是否严格相等(===)。
返回
返回更改对象列表(请参见下文)。
选件
comparator:用于自定义相等性检查的function(left, right)
示例
- 用法
设置
method="diffArrays"以调用Diff.diffArrays(oldArr, newArr[, options])方法
{% diff method="diffArrays" %}
```json
[
"Vue",
"Python",
"Java",
"flutter",
"springboot",
"docker",
"React",
"小程序"
]
```
```json
[
"Vuejs",
"Nodejs",
"Java",
"flutter",
"springboot",
"docker",
"React"
]
```
{% enddiff %}
- 预览
[
- Vue
- Python
+ Vuejs
+ Nodejs
Java
flutter
springboot
docker
React
- 小程序
]
步骤#3- 运行 gitbook 命令
- 运行
gitbook install.它将自动为您的gitbook安装diff插件.
该步骤仅需要允许一次即可.
gitbook install
或者您可以运行 npm install gitbook-plugin-diff 命令本地安装 gitbook-plugin-diff 插件.
npm install gitbook-plugin-diff
- 像往常一样构建您的书(
gitbook build)或服务(gitbook serve).
gitbook serve
示例
- 官方文档配置文件
https://github.com/snowdreams1006/gitbook-plugin-diff/blob/master/docs/book.json
{
"plugins": ["diff"],
"pluginsConfig": {
"diff": {
"method": "diffJson"
}
}
}
- 官方示例配置文件
https://github.com/snowdreams1006/gitbook-plugin-diff/blob/master/example/book.json
{
"plugins": ["diff"],
"pluginsConfig": {
"diff": {
"method": "diffJson"
}
}
}
- 示例
book.json文件
{
"plugins": ["diff"]
}
或者您可以将 method 设置为默认方法用于代码之间进行比较方式:
{
"plugins": ["diff"],
"pluginsConfig": {
"diff": {
"method": "diffChars"
}
}
}
或者您可以根据方法将 options 设置为默认选项.
{
"plugins": ["diff"],
"pluginsConfig": {
"diff": {
"method": "diffChars",
"options": {
"ignoreCase": true
}
}
}
}
注意 :如果您的书还没有创建,以上代码段可以用作完整的 book.json 文件.
致谢
- A javascript text differencing implementation. : https://github.com/kpdecker/jsdiff
- get colors in your node.js console : https://github.com/Marak/colors.js
- GitBook CodeGroup Plugin : https://github.com/lwhiteley/gitbook-plugin-codegroup
作者
snowdreams1006
- 网站 : snowdreams1006.tech
- GitHub : @snowdreams1006
- 电子邮件 : snowdreams1006@163.com
贡献
欢迎贡献,问题和功能要求!随时检查问题页面 。
支持
如果这个项目对您有帮助,请给个星星 !
版权
版权所有 2019 snowdreams1006 。
该项目是MIT许可的。
如果本文对你有所帮助,请动动小手点一下推荐,否则还请留言指正,如有需要,请关注个人公众号「 雪之梦技术驿站 」

gitbook 入门教程之比较代码块差异 diff 插件的更多相关文章
- gitbook 入门教程之小白都能看懂的 Gitbook 插件开发全流程
什么是插件 Gitbook 插件是扩展 GitBook 功能(电子书和网站)的最佳方式. 只要是 Gitbook 默认没有提供的功能,基于插件机制都可以自行扩展,是插件让 Gitbook 变得更加强大 ...
- gitbook 入门教程之从零到壹发布自己的插件
什么是插件 Gitbook 插件是扩展 Gitbook 功能的最佳方式,如果 Gitbook 没有想要的功能或者说网络上也没有现成的解决方案时,那么只剩下自食其力这条道路,让我们一起来自力更生开发插件 ...
- gitbook 入门教程之前置知识
markdown 基本知识 markdown 是一种简化的 html 语法,相比于 txt 无格式文本更强大. 你可以用专门的软件去编辑 markdown 文件,就像需要使用软件编辑 txt 文件一样 ...
- gitbook 入门教程之常用命令详解
不论是 gitbook-cli 命令行还是 gitbook editor 编辑器都离不开 gitbook 命令的操作使用,所以再次了解下常用命令. 注意 gitbook-cli 是 gitbook 的 ...
- gitbook 入门教程之使用 gitbook.com 在线开发电子书
gitbook 官网是官方提供的图书托管的在线平台,分为新版官网(需要FQ) https://www.gitbook.com/ 和旧版官网(无需FQ) https://legacy.gitbook.c ...
- gitbook 入门教程之还在搞公众号互推涨粉?gitbook 集成导流工具,轻轻松松躺增粉丝!
相信大多数博客作者都或多或少有过这样想法: 现在各种平台这么多,想要实现全平台发布就要到处复制粘贴,等我有空一定做统一平台一次性全部解决! 不知道正在阅读文章的你,有没有这样的想法? 反正我确实这么想 ...
- gitbook 入门教程之使用 gitbook-cli 开发电子书
gitbook 生成电子书主要有三种方式: gitbook-cli 命令行操作,简洁高效,适合从事软件开发的相关人员. gitbook-editor 编辑器操作,可视化编辑,适合无编程经验的文学创作者 ...
- gitbook 入门教程之快速体验
本文主要介绍三种使用 gitbook 的方式,分别是 gitbook 命令行工具,Gitbook Editor 官方编辑器和 gitbook.com 官网. 总体来说,三种途径适合各自不同的人群,找到 ...
- gitbook 入门教程之环境要求
gitbook 是基于 node.js 的命令行工具,首先需要安装并配置好 node.js 环境,然后才能安装gitbook 相关工具. 由于安装工具全部都是国外网站,因此速度可能会很慢,也可能需要F ...
- gitbook 入门教程之发布电子书
输出目标文件 语法格式: gitbook build [book] [output] 默认情况下,gitbook 输出方式是静态网站,其实 gitbook 的输出方式有三种: website, jso ...
随机推荐
- Servlet转发与重定向的资源路径问题解析
一. 问题引入 转发和重定向可以说是Servlet中最重要的知识点也不为过,因为它决定着整个向Servlet体系中,执行流程的问题. 转发: request.getRequestDispat ...
- 使用Newtonsoft.Json进行Json与XML相互转换
XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析好像没啥难度.今天突然发现Newtonsoft.Json中有关于Json和XML互转的方法,所以顺带记录总结一下. 一.关于Newtons ...
- iOS11 ReplayKit2 问题总结
一.苹果自6月30日发布iOS11系统之后,其中的Airplay的协议发生变更,导致市场上的苹果直播助手(录屏)大部分变得不可用,因此在iOS11之后需要寻找新的技术方案来录屏 1)采用系统提供的Re ...
- vscode git bash终端配置:“”message": "此项已弃用,配置默认 shell 的新推荐方法是在 `#terminal.integrated.profiles.windows#
当VSCode升级至1.57.1(2021.6.17)时,会出现警告提示:""message": "此项已弃用,配置默认 shell 的新推荐方法是在 `#te ...
- react 装饰器
使用装饰器定义 装饰器是一种函数,写成 @函数名.它可以放在类和类方法的定义前面.react脚手架创建的项目默认是不支持装饰器,需要手动安装相关模块和添加配置文件. 安装相关模块 npm i -D c ...
- 自建yum源
自定义yum本地仓库 你不需要依赖外网的yum仓库,可能导致该仓库无法访问,下载软件失败.. 大公司,会自建yum仓库 防止出现网络问题,自建了yum仓库,本地yum仓库 你可以去阿里云上,部署一个在 ...
- jsp表单提交中的逻辑判断
针对于表单 通常情况下 我们都是表单提交 提交的路径为以下: 提交的按钮的type="submit" 当我们想在表单提交前增加一个逻辑判断 我们就需要把button中的typ ...
- [AGC030C] Coloring Torus
非常巧妙的一道构造题,发现对于所构造的 \(n\) 有上限,那么对于 \(K<=500\) 的情况,很好构造,每行全是一个数就行了,对于 \(K>500\) 的情况,显然每行都是 \(1, ...
- 半夜被慢查询告警吵醒,limit深度分页的坑
分享是最有效的学习方式. 博客:https://blog.ktdaddy.com/ 故事 梅雨季,闷热的夜,令人窒息,窗外一道道闪电划破漆黑的夜幕,小猫塞着耳机听着恐怖小说,辗转反侧,终于睡意来了,然 ...
- 原生js实现下拉框可输入
js实现下拉框可输入 前言 众所周知,html默认的下拉框是无法输入值的,然后最新的办法是用datalist和输入框绑定,但是很多浏览器不支持.然后还有很多框架提供的下拉框都是可输入的.但是公司的项目 ...