x-cold / yuque-hexo

同步语雀的文章到你的 Hexo 项目吧!
http://blog.lxstart.net/
MIT License
711 stars 83 forks source link
blog download hexo nodejs sync yuque

yuque-hexo

NPM version build status Test coverage David deps npm download

A downloader for articles from yuque(语雀知识库同步工具)

Usage

Premise

建议使用 Node.js >= 12

事先拥有一个 hexo 项目,并在 package.json 中配置相关信息,可参考 例子

Config

配置 YUQUE_TOKEN

出于对知识库安全性的调整,使用第三方 API 访问知识库,需要传入环境变量 YUQUE_TOKEN,在语雀上点击 个人头像 -> 设置 -> Token 即可获取。传入 YUQUE_TOKEN 到 yuque-hexo 的进程有两种方式:

配置 图床TOKEN(可选)

语雀的url存在防盗链的问题,直接部署可能导致图片无法加载。 如果需要语雀URL上传到图床中并替换原链接,就需要配置上传密钥。

访问图床的密钥管理获取密钥,然后传入密钥到yuque-hexo

配置知识库

package.json

{
  "name": "your hexo project",
  "yuqueConfig": {
    "postPath": "source/_posts/yuque",
    "cachePath": "yuque.json",
    "mdNameFormat": "title",
    "adapter": "hexo",
    "concurrency": 5,
    "baseUrl": "https://www.yuque.com/api/v2",
    "login": "yinzhi",
    "repo": "blog",
    "onlyPublished": false,
    "onlyPublic": false,
    "lastGeneratePath": "lastGeneratePath.log",
    "imgCdn": {
      "enabled": false,
      "concurrency": 0,
      "imageBed": "qiniu",
      "host": "",
      "bucket": "",
      "region": "",
      "prefixKey": ""
    }
  }
}
参数名 含义 默认值
postPath 文档同步后生成的路径 source/_posts/yuque
cachePath 文档下载缓存文件 yuque.json
lastGeneratePath 上一次同步结束的时间戳的文件
mdNameFormat 文件名命名方式 (title / slug) title
adapter 文档生成格式 (hexo/markdown) hexo
concurrency 下载文章并发数 5
baseUrl 语雀 API 地址 -
login 语雀 login (group), 也称为个人路径 -
repo 语雀仓库短名称,也称为语雀知识库路径 -
onlyPublished 只展示已经发布的文章 false
onlyPublic 只展示公开文章 false
imgCdn 语雀图片转CDN配置

slug 是语雀的永久链接名,一般是几个随机字母。

imgCdn 语雀图片转图床配置说明

注意:开启后会将匹配到的所有的图片都上传到图床

参数名 含义 默认值
enabled 是否开启 false
concurrency 上传图片并发数, 0代表无限制,使用github图床时,并发问题严重,建议设置为1 0
imageBed 选择将图片上传的图床
目前支持腾讯云(cos)、阿里云(oss)和七牛云(qiniu),又拍云(upyun),Github图床(github)
默认使用七牛云
'qiniu'
host 使用七牛云/又拍云图床时,需要指定CDN域名前缀
bucket 图床的bucket名称 -
region 图床的的region -
prefixKey 文件前缀 -

host 说明

由于七牛云默认使用CND进行图片外链访问(默认提供30天的临时域名或者添加自定义CDN域名),所以需要指定访问的域名前缀 例如:'host': http://image.1874.cool,域名后面不需要加斜杠

又拍云和七牛云有点类似,默认使用临时域名访问,但不同的是又拍云的临时域名暂时是由服务名.test.upcdn.net组成,默认为http访问

如果使用临时域名,host可不填。使用自定义域名,默认为http访问,如果需要指定协议为https,则需要填写完整的域名

例如 'host': upyun.1874.coolhttps://upyun.1874.cool

Github图床的默认域名是raw.githubusercontent.com,如果要使用jsdelivr进行加速,可以配置hostcdn.jsdelivr.net

例如 'host': cdn.jsdelivr.net

bucket和region说明

获取腾讯云的bucket和region,示例:{ bucket: "blog", region: "ap-guangzhou" }

获取阿里云的bucket和region,示例:{ bucket: "blog", region: "oss-cn-shenzhen" }

获取七牛云的bucket(空间)和region(机房),示例:{ bucket: "blog", region: "Zone_z2" }

七牛云机房取值: 华东(Zone_z0)华北(Zone_z1)华南(Zone_z2)

又拍云没有bucket和region的概念,只有服务名。所以这里的bucket=服务名,region暂时保留不需要填写

Github图床也没有bucket和region的概念。所以bucket=仓库名,region暂时保留不需要填写

prefixKey 说明

如果需要将图片上传到bucket的根目录,那么prefixKey不用配置。

如果想上传到指定目录blog/image下,则需要配置prefixKey为"prefixKey": "blog/image"。

目录名前后都不需要加斜杠

配置示例: yuque-hexo配置示例

Install

npm i -g yuque-hexo
# or
npm i --save-dev yuque-hexo

Sync

yuque-hexo sync

Clean

yuque-hexo clean

Npm Scripts

{
  "sync": "yuque-hexo sync",
  "clean:yuque": "yuque-hexo clean"
}

Debug

DEBUG=yuque-hexo.* yuque-hexo sync

Best practice

另外 x-cold 本人提供了一个触发 Travis CI 构建的 HTTP API 接口,详情请查看文档 (请勿恶意使用)

Notice

Example

Changelog

v1.9.5

v1.9.4

v1.9.2

v1.9.1

v1.9.0

v1.8.0

v1.7.0

v1.6.5

v1.6.4

v1.6.3

v1.6.2

v1.6.1

v1.6.0

v1.5.0

v1.4.3

v1.4.2

v1.4.0

v1.3.1

v1.2.1

v1.1.1