Hexo3同时发布到多个仓库


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

Problem 1. Hexo deployer报错

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

ERROR Deployer not found: git

Solution:

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时报错。

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

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

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:

在迁移至coding pages服务后,需要在coding的项目页面手动开启pages服务。这里有一点改进就是coding的pages服务不限定branch的名称,可以自定义pages服务映射的branch。这里我们为了方便,将coding pages这边的branch也改成master。 _config.yml中的deploy也与之前的写法不同,经过多次尝试,以下配置可以同时发布文章到多个平台。

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了。