hexo折腾笔记
生命不息,折腾不止!
注:本文大部分内容写于2018年,使用的Hexo版本为3.x,NexT版本为v5,部分内容已过时,当前(2021年),Hexo版本已升级到5.x,NexT主题版本已更新到v8,最新的配置参见Hexo和NexT的官方文档。
搭建环境
1、安装 Node.js Node.js 官网
建议下载 LTS 版本,官网首页的 LTS 是14.x
版本,如果使用Windows 7
操作系统,则需要下载12.x
版本
3、安装 Hexo
1 | npm install hexo-cli -g |
注:nodejs 和 npm 的仓库托管在 S3 上,在国内访问十分困难,这里可以用淘宝的镜像站 npm.taobao.org
代替。
npm 使用 registry
这个属性指定仓库,因此配置这个属性即可。修改 npm 配置属性的几种方法详见官方文档。
修改 registry
的方法,以下三种任意一种即可:
- 修改
~/.npmrc
文件(没有就自行新建一个),写入registry = https://registry.npm.taobao.org
- 添加环境变量
NPM_CONFIG_REGISTRY=https://registry.npm.taobao.org
- 使用命令
npm config set registry https://registry.npm.taobao.org
类似地,以下命令将disturl
属性指向 https://npm.taobao.org/dist
npm config set disturl https://npm.taobao.org/dist
初始化博客
新建并进入博客文件夹blog
(在运行以下命令前,确保此文件夹是空文件夹),在此处打开Git Bash
,输入
1 | hexo init |
配置博客
在blog
目录下,用文本编辑器打开_config.yml
(站点配置文件),修改参数。
注意,在每个参数的:
后都需要有一个空格
修改网站相关信息
1 | # Site |
配置 URL
将url
修改为个人域名、github.io
等的网址。
例如:
1 | url: dslwind.github.io |
对于root
(根目录)、permalink
(永久链接)、permalink_defaults
(默认永久链接)等其他信息保持默认。
配置部署
1 | deploy: |
此外,可将_config.yml
中的repo
修改为如下标准格式:
1 | repo: https://用户名:密码@github.com/用户名/用户名.github.io.git |
这样做的好处就是每次hexo deploy
提交时不需要输入账号密码。
发表文章
新建博文
在命令行中输入:
1 | hexo new "测试文章" |
编辑博文
上述命令会在source/_posts/
文件夹生成测试文章.md
的markdown
文件,打开并编辑该文件。
在文件开头处,可以按如下格式添加文章标题,日期,分类、标签以及描述等。
1 |
|
生成页面
运行以下命令
1 | hexo clean |
打开http://localhost:4000/
,可以在本地预览网站的初步样子。
发布博文
执行hexo deploy
1 | hexo deploy |
执行hexo deploy
时如果出现错误
1 | deploy not found: git |
则执行如下语句后,再部署即可:
1 | npm install hexo-deployer-git --save |
总结
发布文章的步骤:
1、hexo new
创建文章(当然也可以通过其他方式创建 Markdown 文件)
2、Markdown 语法编辑文章
3、部署
1 | hexo clean # 清除缓存 网页正常情况下可以忽略此条命令 |
其中的部分命令可以简写:
1 | hexo n "我的博客" == hexo new "我的博客" # 新建文章 |
安装并使用 NexT 主题
在blog
目录下运行:
1 | git clone https://github.com/theme-next/hexo-theme-next themes/next |
修改站点配置文件_config.yml
1 | theme: next |
更新 NexT 主题:
1 | cd themes/next |
设置 NexT 主题模式
在 NexT 主题中,有四种不同的模式,通过切换模式,NexT 主题显示不一样的样式。
在 NexT 根目录下有一个同样名称为_config.yml
,将其称为主题配置文件,在其中找到scheme
属性,如下所示:
1 | # Schemes |
NexT 主题默认使用 Muse 模式,可根据自己的喜好,选择其中一种模式,本博客采用 Gemini 模式。
NexT 主题已原生支持暗黑模式,以下设置可以启用暗黑模式
1 | # Dark Mode |
设置预览摘要
设置完模式后,尽管首页显示的是所有文章的列表,但是每一篇文章都显示了所有内容,这样感觉看起来不舒服,这时候可以启用预览摘要模式,在主题配置文件中找到excerpt_description
属性,设置为true
:
1 | excerpt_description: true #将原有的false改为true |
另一种方案是在写md
文件的时候,手动插入<!-- more -->
标记,这样做的好处是可以精确设置需要预览的文字。
添加菜单选项
默认情况下,菜单导航栏有首页
和归档
两个选项,可根据需要添加分类
、标签
和关于
等。在主题配置文件中,找到menu
属性,并去掉categories
、 tags
、about
的注释,如下所示:
1 | menu: |
调整属性的顺序将直接影响页面菜单显示的次序。
然后在博客根目录执行如下命令,添加相应页面:
1 | hexo new page "categories" |
执行完上述指令后,博客根目录的source
文件夹下会创建三个文件夹categories
、tags
、about
和archives
,这些文件夹中各有一个index.md
文件,
修改这四个 Markdown 文件内容,分别添加对应的type
属性,例如:
1 |
|
完成文件的修改,然后部署 Hexo 即可完成菜单选项的添加。
渲染数学公式
在主题配置文件中,定位到 mathjax
,将enable
选项设置为 true
。
1 | # Math Formulas Render Support |
根据上面的注释说明,须在需要渲染数学公式的页面中加入mathjax: true
,这样做的好处是,可以根据需要加载 mathjax 脚本;如果将per_page
设置为false
,则所有页面都会加载mathjax
。
更多关于数学公式的显示,参见 NexT 主题文档
修改页脚
修改主题配置文件,定位到footer
,修改属性如下
1 | footer: |
修改文章底部的#
号标签
在主题配置文件中,定位到tag_icon
,将其属性修改为true
:
1 | # Use icon instead of the symbol # to indicate the tag at the bottom of the post |
添加加载进度条
在主题配置文件中,定位到pace
,将enable
选项设置为 true
,并使用 CDN 加载
1 | pace: |
添加阅读进度条
在主题配置文件中,定位到reading_progress
,将enable
选项设置为 true
:
1 | # Reading progress bar |
添加返回顶部按钮
在主题配置文件中,定位到back2top
,将enable
选项设置为 true
:
1 | back2top: |
修改代码高亮配色并启用代码段复制按钮
修改主题配置文件codeblock
字段
1 | codeblock: |
页面右上角添加 GitHub 按钮
在主题配置文件中,定位到github_banner
,将enable
选项设置为 true
,并修改permalink
指向:
1 | # `Follow me on GitHub` banner in the top-right corner. |
行内代码样式自定义
打开themes/next/source/css/_common/components/post/post.styl
,在.post-body
里加入
1 | code { |
颜色可以自己定义,注意将backgroud
设置为none
,否则暗黑模式下背景色会瞎眼。
设置个人头像
在主题配置文件中,定位到avatar
属性,
1 | # Sidebar Avatar |
项目主页添加 README
如果直接使用命令hexo n README
,再部署至远程的时候,hexo 会将它解析为 html 文件;此外,如果手动在远程仓库添加Readme
文件,hexo 每次部署时也会删掉该文件。
解决方式是在source
目录下手动新建一个README.mdown
文件(注意这里的后缀是.mdown
),或者新建一个Readme.txt
文件。然后再在这个新建文件中写 README 即可。再之后hexo g
会把它复制到public
文件夹,而不会解析成html
文件,发布在博客中。
添加字数统计和阅读时长
首先安装插件
1 | npm install hexo-symbols-count-time --save |
修改站点配置文件中添加如下代码即可开启统计功能:
1 | symbols_count_time: |
修正图片显示问题
默认配置时,博客文章里面的本地图片不会同步上传。解决方案如下:
1、把站点配置文件里的post_asset_folder
选项设置为true
2、安装图片上传插件
1 | npm install hexo-asset-image --save |
3、插件安装完成后,再运行hexo n "xxxx"
来生成博文时source/_posts
文件夹内除了xxxx.md
文件外,还将生成一个名为xxxx
的文件夹
4、在xxxx.md
中引入图片时,先把图片复制到xxxx
文件夹,然后按如下格式引入图片:
1 | ![你想输入的替代文字](xxxx/图片名.jpg) |
添加社交链接
修改主题设置文件的social
属性
1 | social: |