yuque-hexo icon indicating copy to clipboard operation
yuque-hexo copied to clipboard

能否同步多个语雀空间repo到hexo

Open ichizi opened this issue 6 years ago • 14 comments

ichizi avatar May 12 '19 14:05 ichizi

暂时没有计划。可以具体说说你的需求~

x-cold avatar May 14 '19 03:05 x-cold

是这样的,我们团队 在语雀 维护了不同的知识库。 但是现在hexo 只能同步一个知识库的内容,而现在想不同知识库的内容输出到hexo不同的分类下。

ichizi avatar May 14 '19 03:05 ichizi

2.0 版本可以支持一下,可能会换一个仓库名字,以更好的支持扩展

x-cold avatar Jun 03 '19 11:06 x-cold

这竟然是个小众需求吗?

xxb avatar Apr 11 '20 21:04 xxb

@x-cold 哈哈,需求加一

wztlink1013 avatar Nov 17 '20 02:11 wztlink1013

需求+2

CCKNBC avatar Dec 17 '20 15:12 CCKNBC

需求+3

yizhichangyuan avatar Aug 03 '21 07:08 yizhichangyuan

需求+4

qdwds avatar Sep 29 '21 08:09 qdwds

需求+5

xinc-it avatar Oct 16 '21 04:10 xinc-it

需求+6

lonbaw avatar Nov 06 '21 18:11 lonbaw

请问还会更新这个功能吗?我非常愿意为2.0版本贡献代码

wxharry avatar May 20 '22 14:05 wxharry

需求+10086

earthaYan avatar Aug 26 '22 05:08 earthaYan

需求 + 10087

bazijun avatar Oct 12 '22 07:10 bazijun

我写了个简陋的脚本,可以解决这个问题,将该脚本加入你的构建过程中即可。 @x-cold

syncAllYuqueRepo.js

多仓库肯定意味着多个缓存文件,所有缓存可以装在一个文件夹中。但需要先创建yuqueCache文件夹不然会报错。

const FS = require('fs');
const spawn = require('cross-spawn');
const packageJson = require('./package.json')
// 扩展该列表即可实现多仓库同步
const yuqueConfigList = [
    {
        name: "仓库A",
        postPath: "source/_posts/repoA",
        cachePath: "yuqueCache/repoA.json",
        repo: "仓库A的repo",
    },
    {
        name: "仓库B",
        postPath: "source/_posts/repoB",
        cachePath: "yuqueCache/repoB.json",
        repo: "仓库B的repo",
    },
]

// 按照 yuqueConfigList 替换 yuqueConfig中的地址,仓库名,缓存地址。并逐个触发语雀文档同步。
for (const repo of yuqueConfigList) {
    packageJson.yuqueConfig.postPath = repo.postPath
    packageJson.yuqueConfig.cachePath = repo.cachePath
    packageJson.yuqueConfig.repo = repo.repo
    FS.writeFileSync('./package.json', JSON.stringify(packageJson, null, 2));
    console.log('\n[sync]===>', repo.name, '<===[sync]');
    spawn.sync('yarn', ['sync'], { stdio: 'inherit' })
}

package.json

"scripts": {
    "sync": "yuque-hexo sync",
    "clean:yuque": "rimraf yuqueCache/*",
    "clean:yuque:linux": "rm -rf yuqueCache/*",
    "build": "node syncAllYuqueRepo.js && hexo clean && hexo g -d",
    "server": "node syncAllYuqueRepo.js && hexo clean && hexo g && hexo s",
  },
  ...
  "yuqueConfig": {
    "postPath": "source/_posts/xxx",
    "cachePath": "yuqueCache/yuque_xxx.json",
    "mdNameFormat": "title",
    "adapter": "hexo",
    "concurrency": 5,
    "baseUrl": "https://www.yuque.com/api/v2",
    "login": "你的login",
    "repo": "你的repo",
    "token": "你的token"
  }

bazijun avatar Oct 17 '22 02:10 bazijun