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 ...
随机推荐
- 《最新出炉》系列入门篇-Python+Playwright自动化测试-48-Route类拦截修改请求-上篇
1.简介 在日常工作和学习中,自动化测试的时候:在加载页面时,可能页面出现很多不是很重要或者不是我们所关注的,这个时候我们就可以选择不加载这些内容,以提高页面加载速度,节省资源.例如:可能页面上图片比 ...
- dubbo~javax.validation和jakarta.validation的介绍与排雷
javax.validation和jakarta.validation都是用于Java中进行数据验证(validation)的相关API,它们提供了一套标准的验证框架,用于验证Java对象的属性是否符 ...
- 初学go语言
for(int a = 0; a<10 ; a++){ // c语言的循环 } for a := 0 ; a<10 ; a++ { // go语言的循环 } // for二边的括号 ...
- 双网卡、多网卡指定IP分别访问网卡(windows添加静态路由)
有两块网卡,网关分别是 128.0.100.198 和 192.168.10.2,128.0.100.198,网速10M.192.168.10.2,网速100M.平时上网用192.168.10.2,访 ...
- windows 通过cmd命令(netsh wlan命令)连接wifi
引用:https://www.cnblogs.com/moonbaby/p/11188135.html 1)显示本机保存的profiles,配置文件是以wifi的ssid命名的. netsh wlan ...
- mysql备份实战
1.备份恢复演练(mysqldump+binlog) 知识储备 如下内容.. 全量备份 全量数据,指的是某一整个数据库(如kings)中所有的表.以及表数据,进行备份. 例如备份所有数据库.以及所有数 ...
- 部署jar项目服务命令
部署jar项目服务命令首先使用jenkins打包jar history | grep java 查看ps aux | grep 服务关键字关闭进程,否则启动的时候报错:java.net.BindExc ...
- QQ、支付宝、微信收款码三合一
Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解` QQ.支付宝.微信收款码三合一 日期:2018-8-24 ...
- JAVA日期当天0点0分0秒
LocalDateTime LocalDateTime ldt = LocalDateTime.now(); LocalDateTime todayZero = LocalDateTime.of(ld ...
- Linux多网卡的bond模式原理
Linux多网卡绑定 网卡绑定mode共有7种: bond0,bond1,bond2,bond3,bond4,bond5,bond6,bond7 常用的有三种: mode=0: 平衡负载模式, ...