写在前面

语雀 是一款非常好用的知识管理网站(类似 GitBook),它的编辑器非常好用,而且支持导出 Markdown,这篇文章是教你如何使用语雀的编辑器写静态博客。这里的静态博客用了 Hexo,Jekyll 也是没有问题的。演示(我的博客)

2019.01.08 更新:语雀开放了 WebHook,我这里提供两种方法让语雀这边改完可以马上自动同步到博客服务器。跳转到新内容

创建 Hexo 博客

已经有 Hexo 博客的可以跳过。如果你是 Jekyll ,也可以跳过。

  • 安装 Node.js

  • 安装 Hexo 脚手架

    1
    npm install -g hexo-cli
  • 初始化一个博客

    1
    2
    3
    hexo init <folder>
    cd <folder>
    npm install
  • 其他设置和命令见:https://hexo.io/zh-cn/docs/

安装语雀文章下载插件

yuque-hexo 是一个 Node.js 环境下的语雀下载器,使用 npm 安装

  • 安装 yuque-hexo

    1
    npm i -g yuque-hexo
  • 注册语雀,创建知识库,获得你的个人路径和知识库的名字,比如我的博客的知识库是 https://www.yuque.com/page/luan.ma

  • 在 Hexo 博客的目录下面的 package.json 中,进行下面的配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {
    "name": "your hexo project", //如果原来已经有这个不用再加了,直接加下面的就可以
    "yuqueConfig": {
    "baseUrl": "https://www.yuque.com/api/v2",
    "login": "page",
    "repo": "luan.ma",
    "mdNameFormat": "slug",
    "postPath": "source/_posts/yuque"
    }
    }
  • 如果不是 Hexo 博客,则需要按照上面的文件保存一个 package.json 到博客目录,并且配置 postPath 为正确的文章目录

  • 同步文章

    1
    yuque-hexo sync

PS: 插件支持 Front-matter,在语雀写文章的时候直接写在前面,然后插入一条分割线即可,不写也没问题:

1
2
3
tags: [Hexo]
categories: 教程
date: 2018-10-05 10:43:50

手动启动/部署 Hexo 博客

  • 本地启动(调试用)

    1
    hexo s
  • 生成 html 不部署

    1
    hexo g
  • 自动上传到服务器/静态空间/git (部署)

  1. 先找到一个部署插件
  2. 在配置文件中配置好相关的账号密码
  3. 在 hexo 中生成 HTML 并且部署
    1
    hexo g -d

自动化部署(新内容)

自有服务器

基本思路是用我自己写的 Python 脚本来接收语雀的调用,并且调用系统中的 npm,有能力的同学可以直接用 Node.js 写一起

第一步,配置 package.json ,建一个快捷命令,我这里是先同步然后直接生成到服务器,不部署,如果你需要部署到 github 要改成 hexo g -d

1
2
3
4
"scripts": {
// 其他命令
"g": "npm run sync && hexo g",
}

第二步,配置 python 环境,安装依赖包
py2

1
pip install web.py

py3

1
pip install web.py==0.40-dev1

第三步,在 yuque-hexo 的文件夹里面放我写的脚本,命名为 server.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import web
import subprocess

urls = ("/sync-yuque", "callSync")
app = web.application(urls, globals())

class callSync:
def POST(self):
p = subprocess.Popen(["npm", "run","g"], stdout=subprocess.PIPE)
print(p.communicate()[0])
return 'sync done'

if __name__ == "__main__":
app.run()

第四步,启动

1
python server.py 8080

第五步,在语雀的知识库的设置里面,找到 Webhook,添加一个

1
http://服务器IP:8080/sync-yuque

就完成了。添加之前也可以自己访问测试一下,一般会卡 5-10s 才会把结果打印在屏幕上。

Travis-ci + severless

这个方法比较麻烦,我就不详细说了,可以参考原文:https://segmentfault.com/a/1190000017797561

静态博客空间选择

  1. Github Pages: 方便,不太稳定,Git部署
  2. Coding.net Pages: 速度尚可,Git部署,稳定性也不太好
  3. 腾讯云 COS + 腾讯云 CDN:需要备案,速度极快,稳定性好,COS 插件部署
  4. 自有服务器:可定制 ,支持多种方式部署

写在后面

其实这篇文章干货不多,主要是应某网友的要求,顺便把我的 TenneyBlog 做个了结。核心是把 yuque-hexo 这个东西介绍给大家。这个插件由阿里巴巴的同学开发,我也做了一些微小的贡献。本博客目前也是使用这个方案同步语雀的文章。

当然,关于 Hexo 皮肤、评论插件等等玩法也要折腾很久,我就不在这篇文章里面说了。