美文网首页
gitbook常用插件

gitbook常用插件

作者: 眉音语 | 来源:发表于2019-12-24 09:23 被阅读0次

在项目文件夹下新建book.json


新建book.json

title:本书标题
author:作者
description:描述
language:语言,中文使用zh-hans
gitbook:指定使用gitbook版本
plugins:配置使用的插件
pluginsConfig:配置插件的属性

{

    "title": "演示用",
    "description": "演示",
    "author": "twilight",
    "language": "zh-hans",
    "gitbook": "3.2.3",

    "plugins": [
      "back-to-top-button",
      "splitter",
      "lightbox",
      "custom-favicon",
      "chapter-fold",
      "page-toc-button",
      "-sharing",
      "-lunr",
      "-search",
      "search-pro"

    ],

    "pluginsConfig": {

        "page-toc-button": {
            "maxTocDepth": 2,
            "minTocSize": 2
        },
        "favicon": "./assets/favicon.ico"
      }
        

}

常用插件1:back-to-top-button 回到顶部

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-back-to-top-button,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
使用

{
    "plugins": [
         "back-to-top-button"
    ]
}
回顶部按钮

可在node_modules\gitbook-plugin-back-to-top-button\assets\plugin.css中修改图标位置,颜色等样式

常用插件2:splitter 侧边栏宽度可调节

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-splitter,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
使用

{
    "plugins": [
         "splitter"
    ]
}

常用插件3:lightbox 单击查看图片

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-lightbox,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
使用

{
    "plugins": [
         "lightbox"
    ]
}

常用插件4:custom-favicon 修改标题栏图标

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-custom-favicon,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
使用

{
    "plugins" : ["custom-favicon"],
    "pluginsConfig" : {
        "favicon": "path/to/favicon.ico"
    }
}

常用插件5: chapter-fold 导航目录折叠

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-chapter-fold,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
使用

{
    "plugins" : ["chapter-fold"]
}

常用插件6: page-toc-button 悬浮目录

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-page-toc-button,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
使用

{
    "plugins" : ["page-toc-button"]
}
悬浮目录

常用插件7: tbfed-pagefooter 页面添加页脚

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-tbfed-pagefooter,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
使用

{
    "plugins": [
       "tbfed-pagefooter"
    ],
    "pluginsConfig": {
        "tbfed-pagefooter": {
            "copyright":"Copyright &copy xxxx.com 2017",
            "modify_label": "该文件修订时间:",
            "modify_format": "YYYY-MM-DD HH:mm:ss"
        }
    }
}

如果想加入一个URL,自己可以去index.js里,把powered by gitbook,改成
powered by <a href="你的URL" target="_blank">你的名字</a>


页脚

常用插件8: insert-logo 插入logo

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-insert-logo,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
使用

{
    "plugins": [ "insert-logo" ]
    "pluginsConfig": {
      "insert-logo": {
        "url": "images/logo.png",
        "style": "background: none; max-height: 30px; min-height: 30px"
      }
    }
}

常用插件9: search-pro 高级搜索(支持中文)

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-search-pro,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
使用

{
    "plugins": [
          "-lunr", 
          "-search", 
          "search-pro"
    ]
}

常用插件10: page-treeview 生成页内目录

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-page-treeview,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
使用

{
    "plugins": [
        "page-treeview"
    ],
    "pluginsConfig": {
        "page-treeview": {
            "copyright": "Copyright &#169; aleen42",
            "minHeaderCount": "2",
            "minHeaderDeep": "2"
        }
    }
}

目录线面一行版权的信息,如果想要删除,需要在插件目录中打开:/node_modules/gitbook-plugin-page-treeview/lib/index.js。
大约43行,在generateContent方法定义中,该方法的返回值

return renderContent ? `<div class="treeview__container">${copyRight + renderContent}</div>` : '';
// 改成:
return renderContent;

常用插件11:gittalk 评论

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-gittalk,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接
申请 GitHub Application 授权
登录github账号(没有则需要自己注册),申请授权应用https://github.com/settings/applications/new

申请应用.png
应用登记成功后会生成 token 令牌,clientId 和 clientSecret 需要重点保存下来,待会需要用到.
申请成功之后.png
安装并集成到网站(单页面集成)
在需要添加评论的页面,添加下述内容引入 gitalk 插件,其中参数来自我们上一步获取的 clientId 和 clientSecret .

默认应该添加到 .html 页面,当然也可以添加到 .md 页面,毕竟 markdown 语法也支持 html 标签.

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
<div id="gitalk-container"></div>
var gitalk = new Gitalk({
  "clientID": "clientId",
  "clientSecret": "clientSecret",
  "repo": "GitHub repo",
  "owner": "GitHub repo owner",
  "admin": ["GitHub repo admin"],
  "id": location.pathname,      
  "distractionFreeMode": false  
});
gitalk.render("gitalk-container");

稍微解释下参数的含义:
● "clientID" : [必选] GitHub Application Client ID
● "clientSecret" : [必选] GitHub Application Client Secret
● "repo" : [必选] GitHub repository(github上需建立仓库)
● "owner" : [必选] GitHub repository 所有者,可以是个人或者组织
● "admin" : [必选] GitHub repository 的所有者和合作者 (对这个 repository有写权限的用户)
● "id" : [可选] 页面的唯一标识,默认值: location.href, 长度必须小于50,否则会报错!
● "distractionFreeMode": [可选] 类似 Facebook 评论框的全屏遮罩效果,默认值: false
测试集成效果
按照上述安装步骤,将代码复制到首页(README.md)文件中,然后推送到 github ,体验下集成效果.
注意: 这里必须推送到服务器,因为申请应用时填写的域名是线上地址,因而本地测试是不会成功的,会报错,这一点和微信支付的回调地址类似.

示例:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">
<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>
<div id="gitalk-container"></div>
<script>
var gitalk = new Gitalk({
  "clientID": "d854ad7ff740d7662cba",
  "clientSecret": "bc1cc6e917ac0d977e020b6b960bbf3c8a43365f",
  "repo": "bigdata",
  "owner": "zhuhm1993",
  "admin": ["zhuhm1993"],
  "id":window.location.pathname,      
  "distractionFreeMode": false  
});
gitalk.render("gitalk-container");
</script>
初始化创建.png

心心相念的 gitalk 评论区呢?是不是哪里配置错了,为啥没有出来?

别急,要淡定,看一下提示说"未找到的 Issue 进行评论,请联系 @snowdreams1006 初始化创建",既然如此,那我们就操作一下吧!

点击下方的按钮 使用 Github登录 ,会跳转到相应的仓库,然后按照提示确定.

再次返回首页,刷新一下看看发生什么神奇的事情了?

第一条评论.png
多页面自动集成

以上那种方式只能手动去给需要评论的页面添加,如果只有几个页面还好,如果有几十上百个页面呢?所以我们这里要偷点懒,让每个页面自动生成评论模块。

这里我打算在tbfed-pagefooter这个插件上动点手脚,期望这个插件在渲染每个页面的时候顺便执行下这个插件的代码。

步骤:
1.新建gitalk-config.js和md5.min.js文件在gitbook根目录下,用此gitalk-config.js文件维护gitalk的配置信息,md5.min.js用来解决因issue的名字超过50而报Error: Validation Failed,md5.min.js加密后issue的名字长度只有32位。


文件

gitalk-config.js内容如下:

var gitalk = new Gitalk({
  "clientID": "100cc43a26a6aefa3006",
  "clientSecret": "3f8bbe3e213470d3d1620dfdd728a8a432cfee90",
  "repo": "weibiaodan",
  "owner": "a3664938",
  "admin": ["a3664938"],
  "id": md5(window.location.pathname),
  "distractionFreeMode": false
});
gitalk.render("gitalk-container");

md5.min.js内容如下:

!function(n){"use strict";function d(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function f(n,t,r,e,o,u){return d(function(n,t){return n<<t|n>>>32-t}(d(d(t,n),d(e,u)),o),r)}function l(n,t,r,e,o,u,c){return f(t&r|~t&e,n,t,o,u,c)}function g(n,t,r,e,o,u,c){return f(t&e|r&~e,n,t,o,u,c)}function v(n,t,r,e,o,u,c){return f(t^r^e,n,t,o,u,c)}function m(n,t,r,e,o,u,c){return f(r^(t|~e),n,t,o,u,c)}function i(n,t){var r,e,o,u,c;n[t>>5]|=128<<t%32,n[14+(t+64>>>9<<4)]=t;var f=1732584193,i=-271733879,a=-1732584194,h=271733878;for(r=0;r<n.length;r+=16)i=m(i=m(i=m(i=m(i=v(i=v(i=v(i=v(i=g(i=g(i=g(i=g(i=l(i=l(i=l(i=l(o=i,a=l(u=a,h=l(c=h,f=l(e=f,i,a,h,n[r],7,-680876936),i,a,n[r+1],12,-389564586),f,i,n[r+2],17,606105819),h,f,n[r+3],22,-1044525330),a=l(a,h=l(h,f=l(f,i,a,h,n[r+4],7,-176418897),i,a,n[r+5],12,1200080426),f,i,n[r+6],17,-1473231341),h,f,n[r+7],22,-45705983),a=l(a,h=l(h,f=l(f,i,a,h,n[r+8],7,1770035416),i,a,n[r+9],12,-1958414417),f,i,n[r+10],17,-42063),h,f,n[r+11],22,-1990404162),a=l(a,h=l(h,f=l(f,i,a,h,n[r+12],7,1804603682),i,a,n[r+13],12,-40341101),f,i,n[r+14],17,-1502002290),h,f,n[r+15],22,1236535329),a=g(a,h=g(h,f=g(f,i,a,h,n[r+1],5,-165796510),i,a,n[r+6],9,-1069501632),f,i,n[r+11],14,643717713),h,f,n[r],20,-373897302),a=g(a,h=g(h,f=g(f,i,a,h,n[r+5],5,-701558691),i,a,n[r+10],9,38016083),f,i,n[r+15],14,-660478335),h,f,n[r+4],20,-405537848),a=g(a,h=g(h,f=g(f,i,a,h,n[r+9],5,568446438),i,a,n[r+14],9,-1019803690),f,i,n[r+3],14,-187363961),h,f,n[r+8],20,1163531501),a=g(a,h=g(h,f=g(f,i,a,h,n[r+13],5,-1444681467),i,a,n[r+2],9,-51403784),f,i,n[r+7],14,1735328473),h,f,n[r+12],20,-1926607734),a=v(a,h=v(h,f=v(f,i,a,h,n[r+5],4,-378558),i,a,n[r+8],11,-2022574463),f,i,n[r+11],16,1839030562),h,f,n[r+14],23,-35309556),a=v(a,h=v(h,f=v(f,i,a,h,n[r+1],4,-1530992060),i,a,n[r+4],11,1272893353),f,i,n[r+7],16,-155497632),h,f,n[r+10],23,-1094730640),a=v(a,h=v(h,f=v(f,i,a,h,n[r+13],4,681279174),i,a,n[r],11,-358537222),f,i,n[r+3],16,-722521979),h,f,n[r+6],23,76029189),a=v(a,h=v(h,f=v(f,i,a,h,n[r+9],4,-640364487),i,a,n[r+12],11,-421815835),f,i,n[r+15],16,530742520),h,f,n[r+2],23,-995338651),a=m(a,h=m(h,f=m(f,i,a,h,n[r],6,-198630844),i,a,n[r+7],10,1126891415),f,i,n[r+14],15,-1416354905),h,f,n[r+5],21,-57434055),a=m(a,h=m(h,f=m(f,i,a,h,n[r+12],6,1700485571),i,a,n[r+3],10,-1894986606),f,i,n[r+10],15,-1051523),h,f,n[r+1],21,-2054922799),a=m(a,h=m(h,f=m(f,i,a,h,n[r+8],6,1873313359),i,a,n[r+15],10,-30611744),f,i,n[r+6],15,-1560198380),h,f,n[r+13],21,1309151649),a=m(a,h=m(h,f=m(f,i,a,h,n[r+4],6,-145523070),i,a,n[r+11],10,-1120210379),f,i,n[r+2],15,718787259),h,f,n[r+9],21,-343485551),f=d(f,e),i=d(i,o),a=d(a,u),h=d(h,c);return[f,i,a,h]}function a(n){var t,r="",e=32*n.length;for(t=0;t<e;t+=8)r+=String.fromCharCode(n[t>>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t<r.length;t+=1)r[t]=0;var e=8*n.length;for(t=0;t<e;t+=8)r[t>>5]|=(255&n.charCodeAt(t/8))<<t%32;return r}function e(n){var t,r,e="0123456789abcdef",o="";for(r=0;r<n.length;r+=1)t=n.charCodeAt(r),o+=e.charAt(t>>>4&15)+e.charAt(15&t);return o}function r(n){return unescape(encodeURIComponent(n))}function o(n){return function(n){return a(i(h(n),8*n.length))}(r(n))}function u(n,t){return function(n,t){var r,e,o=h(n),u=[],c=[];for(u[15]=c[15]=void 0,16<o.length&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}(r(n),r(t))}function t(n,t,r){return t?r?u(t,n):function(n,t){return e(u(n,t))}(t,n):r?o(n):function(n){return e(o(n))}(n)}"function"==typeof define&&define.amd?define(function(){return t}):"object"==typeof module&&module.exports?module.exports=t:n.md5=t}(this);
//# sourceMappingURL=md5.min.js.map

2.修改tbfed-pagefooter插件中index.js文件,如下:

var moment = require('moment');
module.exports = {
  book: {
    assets: './assets',
    css: [
      'footer.css'
    ],
  },
  hooks: {
    'page:before': function(page) {
      var _label = '更新时间: ',
          _format = 'YYYY-MM-DD',
          _copy = 'powered by sysdsoft'
      if(this.options.pluginsConfig['tbfed-pagefooter']) {
        _label = this.options.pluginsConfig['tbfed-pagefooter']['modify_label'] || _label;
        _format = this.options.pluginsConfig['tbfed-pagefooter']['modify_format'] || _format;

        var _c = this.options.pluginsConfig['tbfed-pagefooter']['copyright'];
        _copy = _c ? _c + ' all right reserved,' + _copy : _copy;
      }
      var _copy = '<span class="copyright">'+_copy+'</span>'
      
      var str = '\n\n<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.css">'+
      '\n<script src="https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"></script>'+
      '\n<div id="gitalk-container"></div>'+
      '\n<script src="http://cd.sysdsoft.cn:4000/md5.min.js"></script>'+
      '\n<script src="http://cd.sysdsoft.cn:4000/gitalk-config.js"></script>'+
      ' \n\n<footer class="page-footer">' + _copy +
        '<span class="footer-modification">' +
        _label +
        '\n{{file.mtime | date("' + _format +
        '")}}\n</span></footer>';
        
        
      page.content = page.content + str;
      
      return page;

    }
  },
  filters: {
    date: function(d, format) {
      return moment(d).format(format)
    }
  }
};

gittalk.png

注:绿色部分为gitalk插件代码;
这里需要注意的是gitalk-config.js和md5.min.js的链接地址,ip地址为gitbook在线文档服务器外网地址,最好不要用相对路径,因为如果md文件与gitalk-config.js和md5.min.js不在同一路径下时,无法正确引用这两个js文件;也不要用localhost:4000/gitalk-config.js这种地址,因为服务器可能不允许访问这类地址。

测试验证
按照以上方式修改过后,本地运行,看是否成功调用gitalk插件。
如果成功调用会提示需要初始化,如果点击登陆初始化的话会报错,因为gitalk配置的地址是服务器地址,会自动跳转到服务器地址页面,而服务器那边的gitbook还没有更新,所以就会报错。
本地只要看到能正常显示gitalk模块出来,就说明配置成功。接下来就更新到服务器上就ok了。

常用插件12:change_girls 可自动切换的背景

安装
方法一:在book.json中添加以下内容,然后执行gitbook install
方法二:使用NPM安装npm install gitbook-plugin-change_girls,
方法三:从源码GitHub地址中下载,放到node_modules文件夹里github链接

{
    "plugins":["change_girls"],
    "pluginsConfig": {
        "change_girls" : {
            "time" : 10,
            "urls" : [
                "girlUrl1", "girlUrl2",...""
            ]
        }
    }
}

字段说明:
● time:图片的切换时间,单位是秒
● urls: 一个数组,可以定义多个图片,只能使用互联网上的绝对地址

相关文章

  • gitbook常用插件

    在项目文件夹下新建book.json title:本书标题author:作者description:描述langu...

  • 5.文档 - gitbook - 插件

    参考 官方插件 重点参考 GitBook 插件 常用插件 配置插件 到 官方插件 上找合适的插件 在配置文件中安装...

  • 4. 插件安装

    gitbook 还支持许多插件,用户可以从 NPM 上搜索 gitbook 相关的插件 gitbook 的插件信息...

  • gitbook常用插件配置

    仅做记录用。添加book.json文件后,需要执行gitbook install安装插件。 使用gitbook写作...

  • Gitbook常用插件合集

    一、书本配置 1. 书本标题:title 2. 作者:author 3. 简单描述:description 4. ...

  • GitBook

    GitBook 使用入门 使用 Gitbook 打造你的电子书 GitBook 插件 插件theme-api gi...

  • gitbook 入门教程之从零到壹发布自己的插件

    什么是插件 Gitbook 插件是扩展 Gitbook 功能的最佳方式,如果 Gitbook 没有想要的功能或者说...

  • gitbook入门

    程序员走起 ----官网---- gitbook ----官网插件地址---- gitbook-plugins -...

  • gitbook经验总结

    程序员走起 ----官网---- gitbook ----官网插件地址---- gitbook-plugins -...

  • GitBook使用教程(使用Nginx实现本地网页部署)

    前面提到GitBook的基本使用方法。不了解的同学可以继续学习。 GitBook入门篇 GitBook插件篇 这一...

网友评论

      本文标题:gitbook常用插件

      本文链接:https://www.haomeiwen.com/subject/iswznctx.html