Featured image of post 从windows到mac下博客迁移踩坑

从windows到mac下博客迁移踩坑

hexo博客迁移以及从hexo到hugo的历程

从Windows下的hexo到mac

说起来一把辛酸泪,本来以为是很简单的事情,但结果遇到了各种错误。

先谈谈hexo,我首先用nvm装好了node环境,接着又安装了hexo,随后去blog目录下npm install,完成,之后配置github的时候提示说不再支持账号密码登录,此时可以使用token作为密码和使用ssh方式登录,我选择了ssh方式登录,ssh登录github教程:git配置ssh秘钥(公钥以及私钥)windows - aaa_Eternity味道 - 博客园 (cnblogs.com),mac下同理,只不过无需使用gitbash,直接打开iterm2即可。

配置完成后要去hexo配置文件.yml中更改git的连接方式。就在配置好之后hexo d时出现了很多奇怪的错误,经过研究发现是当前的node、hexo的版本过于超前,与之前blog下的配置文件发生冲突,无奈又使用nvm安装较低版本的node,在安装hexo时,应该去blog目录下查看.package文件中指定的hexo版本,再进行安装。

重新安装一遍之后再hexo d,没有报错,心想终于搞定,但是检查网站的时候发现了问题,我之前使用的评论系统是gittalk,每篇文章下需要手动初始化才可以使用,但是现在无法进行初始化操作,会报错。早有想换评论插件的想法,这不机会来了,经过筛选发现valine评论系统不错支持匿名评论,教程Hexo博客使用valine评论系统无效果及终极解决方案 - 知乎 (zhihu.com),当我注册号id进行配置时发现我使用的hexo的主题文件中的配置太过老旧,无法支持现在的valine,我想可以升级一下主题来解决这个问题,但是当我找到这主题的主页时该主题的作者已经不再维护了,哭出声,当时选择这个主题只是因为好看,没有考虑到作者的更新频率以及使用人数过少等问题,给今天挖下了大坑。

从hexo到hugo

本想重新更新一个主题再把sources下的文档直接复制过去就好了,奈何看到了有博主吹hugo,经不住诱惑,所以直接上手尝试,先说结果,确实生成文章的速度飞快,主题在github找了star数量前三的主题,这下应该不怕开发者跑路了哈哈哈。

hugo最简单的教程:如何搭建Hugo博客并部署到Github page - 知乎 (zhihu.com)

以及评论系统的配置:博客 | hugo 博客添加 disqus 评论系统 (360doc.com)

值得注意的是push成功之后要在仓库设置页面里找到github pages设置一个主题,随便选一个就可以,不然会404无法访问。

之后进行了一些文章的转移,因为frontmatter不同所以只能手动操作了。

觉得每次更新文章手动操作过于繁琐,于是写了一个shell脚本方便自动操作,注意该脚本适合已经至少push成功一次的站点。每次更新会在桌面生成一个log.text,用来记录更新日期和是否成功,如果失败会记录报错内容(我只是监听了两个最容易报错的地方),对shell不熟悉都是边百度边写,可能写的过于繁琐了,不过好在可以使用。酌情修改位置信息就好了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
cd /Users/duskandwine/MyProject/myblog && hugo
if [ $? -ne 0 ]; then
   echo `date +"%Y-%m-%d %H:%M:%S"` faith: >> /Users/duskandwine/Desktop/log.text
   hugo >> /Users/duskandwine/Desktop/log.text
   echo ---------------------------------------------- >> /Users/duskandwine/Desktop/log.text
else
    cd /Users/duskandwine/MyProject/myblog/public && git add . && git ccommit -m "`date`"
    if [ $? -ne 0 ]; then
	echo `date +"%Y-%m-%d %H:%M:%S"` faith: >> /Users/duskandwine/Desktop/log.text
	git commit -m "`date`" >> /Users/duskandwine/Desktop/log.text
	echo ---------------------------------------------- >> /Users/duskandwine/Desktop/log.text
    else
	git push -f --set-upstream origin master && echo `date +"%Y-%m-%d %H:%M:%S"` success! >> /Users/duskandwine/Desktop/log.text
    fi
fi

同样我觉得每次生成新文章也比较麻烦,也写了一个shell脚本,每次只需要输入文章名字就会自动生成文章并打开。

1
2
3
4
5
6
echo "请输入文件名"
read name
cd /Users/duskandwine/MyProject/myblog
hugo new post/$name.md
cd /Users/duskandwine/MyProject/myblog/content/post
open $name.md
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus