Hexo3同时发布到多个仓库

Web

博客很久没有更新,最近看到Hexo的最新版本已经是3打头了,决定升级继续写博客。然而升级的过程像大部分新产品一样,新特性往往用不到,真正用到的坑又多了一些。折腾了近一周,终于又可以像往常一样使用 Hexo g -d 同时发布到两个git平台。下面记录一下遇到的坑和solution。

Problem 1. Hexo deployer报错


文章Generate正常,进行Deploy时报错。

1
ERROR Deployer not found: git

Solution:

1
npm install hexo-deployer-git --save

具体可以查看Hexo3 WikiIssue#1013

Problem 2. 无法同时发布到多个git平台


包括我在内的一部分人在使用Hexo时,是同时把文章发布到多个git平台的,即使用多个git pages服务。如:github pages和coding pages(原gitcafe pages服务)。然后将国内线路解析到coding pages上,将国外线路解析到github pages上,以保证访问速度和体验。
在升级Hexo3之后,同样遇到了文章Generate正常,进行Deploy时报错。

1
FATAL fatal: remote part of refspec is not a valid name in HEAD: master

在使用Hexo2时,同时发布到多个git平台一般会使用下面的_config.yml配置:

1
2
3
4
5
deploy:
type: git
repo:
github: git@github.com:jerry-shao/jerry-shao.github.io.git, master
gitcafe: git@gitcafe.com:jerryshao/jerryshao.git, gitcafe-pages

Solution

  1. 在迁移至coding pages服务后,需要在coding的项目页面手动开启pages服务。这里有一点改进就是coding的pages服务不限定branch的名称,可以自定义pages服务映射的branch。这里我们为了方便,将coding pages这边的branch也改成master。
  2. _config.yml中的deploy也与之前的写法不同,经过多次尝试,以下配置可以同时发布文章到多个平台。
    1
    2
    3
    4
    5
    6
    deploy:
    type: git
    repo:
    github: git@github.com:jerry-shao/jerry-shao.github.io.git
    coding: git@git.coding.net:jerry_shao/jerryshao.io.git
    branch: master

经过修改后使用 Hexo g -d 就可以同时发布到github和coding了。