博客切换至 Hexo
最近将博客的生成器更改为了 Hexo,并使用了主题 icarus,当然,依然是静态博客。
整个迁移过程异常的顺利、简单,并且博客也比之前漂亮了很多,在这里做个笔记,算是自己的一个 icarus 入门教程吧。
背景
之前使用的是 Hugo 框架生成静态博客,虽然 Hugo 宣称是世界上最快的网站生成器,且很多大佬都表示 Hugo 很简单,但我个人觉得并非如此。原因有如下几点:
性能:静态博客最终生成的都是 html、css、js,然后随便挂个 web 服务器就可以发布,撑死我每天也写不出两篇文章,此时渲染几十毫秒,和渲染几秒对我都没多大影响。
学习成本:静态博客推崇的是约定优于配置,什么意思呢?静态博客简单的代价就是很多东西都是有默认配置的,如果你想要自定义一些东西,你必须得查看文档,看看都有些什么约定、参数,都是用来干嘛的、怎么调整。在这方面,Hexo 的文档只有
24 页
,而 Hugo 的文档有100 多页
,Hugo 确实更强大,但如果你想要做一些修改,也需要更高的学习成本。这里主要是文档,Hugo 不仅有 100 多页的文档,而且还都是英文的。而 Hexo 不仅文档只有十几页,而且还有中文翻译(虽然有点滞后,但不影响了解 Hexo)。
生态:Hugo 与 Hexo 都有三百多个主题,看起来差不多,但很多主题的质量其实很差的,我不是针对谁,我是说在在座的两位。Hugo 我至今没有找到一个简单且满意的主题,而 Hexo,从找主题,到安装,简单修改,运行,一共几个小时就搞定了,丝滑般的享受,我的头发又回来了o( ̄▽ ̄)ブ
总结一下:Hugo 很强,也很难。有多难?我觉得比 Kubernetes 还难!Hexo 各方面都很简单,优秀的主题同样可以赋予静态博客生命,如何选择取决于自己。
以下,是自己使用 Hexo 以及 icarus 主题的一点笔记。
安装 node.js
前往 nodejs.org 根据自己的平台下载对应的版本。
对于 Ubuntu 用户,你也可以执行以下命令:
1 | $ apt-get install -y npm |
安装完成后查看 node 和 npm 版本信息,确保安装成功:
1 | $ node --version |
安装 Hexo
在安装好 node.js 后,执行下面的命令即可:
1 | $ npm install hexo-cli -g |
安装完成后查看 hexo 版本信息,确保安装成功:
1 | $ hexo -v |
初始化博客并下载 Icarus 主题
- 先切换至你写代码的目录,然后初始化博客
1 | $ hexo init <your-blog-name> |
注意:your-blog-name
是一个目录名,你应该将他替换为自己需要的名字。
- 下载 Icarus 主题
1 | git clone https://github.com/ppoffice/hexo-theme-icarus.git themes/icarus -b <version number> --depth 1 |
注意:
- 使用 Icarus 主题
编辑 _config.yml
文件,指定主题:
1 | $ cd ../ && vi _config.yml |
找到 theme
项,将值设为 icarus
:
1 | theme: icarus |
启动博客
1 | $ hexo server |
此时,可能会提示你缺少一些依赖,需要安装,比如这种:
根据给出的提示,运行安装命令就可以了。
随后你就可以访问 http://localhost:4000
查看你的博客了。
虽然此时的博客还是一个毛坯,但看起来还是挺好看的,不得不说 icarus 的作者这方面做的很好,接下来就是根据自己的需求,做一些调整了。
样式改动
对原主题样式的修改都集中在 themes/icarus/include/style/custom.styl
文件内。
about 页和 404 页
about 页面,需要创建一个 source/about/index.md
的文件来进行描述,生成的站点即可正常访问 about 页面
404 页面,需要创建一个 source/404.md
的文件来描述,会生成一个 404.html
,需配合 web 服务器使用。
CDN 加速
所有的静态资源,如:css、js、图片、字体文件均通过 CDN 加速,站点仅提供 html 内容。
文章的图片在写作时就直接通过图床传到 CDN 上了。
而网页的静态文件,使用的方法很土,手动修改了 themes/icarus/layout
下所有涉及引入静态资源代码的路径为 CDN 路径,可以通过关键字 自定义 CDN
找到它们。
GitHub Action
使用 GitHub Action,自动部署到了 GitHub Page 和自己的服务下,相关内容可以查看 .github/workflows/ci.yml
文件