人生天地间,忽如远行客
1. 工具
- github账号
- node.js
让js能作为服务端脚本语言
1 | # 检测 node版本尽量高点,不高先升级nodejs版本,我的是v16.15.0,windows建议直接下载安装包覆盖安装地址 |
- npm
非官方的NodeJS包管理和分发工具
1 | # 查看版本 |
- git
分布式版本控制
1 | # 检测 |
- hexo
一个快速、简洁且高效的博客框架,默认端口4000
1 | # 安装 |
2. 搭建个人仓库
- 名字要和登录名相同【特别注意】
1 | 用户名.github.io |
- 是公开的
1 | public |
- 将博客目录下的_config.yml,加入deploy设置为个人仓库名
1 | deploy: |
- 安装hexo-deployer-git自动化部署发布工具
1 | npm install hexo-deployer-git --save |
- 令牌
1 | 开发者设置 Developer settings |
- 发布博客
1 | # 清除已生成文件及缓存 |
gitee
gitee pages需要实名
公开且仓库名要是用户名,不需要是 用户名.gitee.io
确定公钥,私人令牌
部署到gitee,需要你每次推送后,去更新一下,如果想要自动更新,就需要开通 Gitee 的会员。
1 | deploy: |
3. 美化博客
美化博客根据自己风格来定,我比较喜欢next风格
- 下载next,我用的是稳定版5.1.4
- 将next复制到博客根目录的themes文件下
- 修改博客主配置文件_config.yml文件
1 | # theme: landscape |
- 报错
1 | {% extends '_layout.swig' %} {% import '_macro/post.swig' as post_template %} {% import '_macro/sidebar.swig' as sidebar_template %} {% block title %}{{ config.title }}{% if theme.index_with_subtitle and config.subtitle %} - {{config.subtitle }}{% endif %}{% endblock %} {% block page_class %} {% if is_home() %}page-home{% endif -%} {% endblock %} {% block content %} |
- 解决方案 没有hexo-renderer-swig模块
1 | npm i hexo-renderer-swig |
这里可能需要等待,会出现为一片空白的情况,因为github速度限制
- 主配置的_config.yml
1 | # Hexo Configuration |
- 主题配置文件next 中的_config.yml
1 | # When running the site in a subdirectory (e.g. domain.tld/blog), remove the leading slash from link value (/archives -> archives). |
- 版权信息声明
1 | # Creative Commons 4.0 International License. |
- 展示侧边栏
侧边栏还受动画影响motion. enable为false时,侧边栏不显示,影响版本5.0.0及其以下
1 | sidebar: |
- 侧边栏头像
1 | avatar: |
- 侧边栏外链
1 | social: |
- 友情链接
1 | #links: |
- 打赏功能
1 | #reward_settings: |
- 返回顶部
1 | # Back to top in sidebar (only for Pisces | Gemini). |
- 关闭动画
1 | enable: true |
- 网站图标设置
1 | favicon: |
- 底部页脚
1 | footer: |
- 文章设置
1 | # Automatically excerpt description in homepage as preamble text. |
- 好看的画布
1 | canvas_nest: true |
- 标签
1 | tags: |
- 预览效果摘要
1 | <escape><!-- more --></escape> |
- 增加模块zh-Hans.yml
1 | menu: |
- 主站配置文件
1 | # 标签文件夹 |
- 主题配置文件
1 | menu: |
- 增加文件夹
1 | hexo n page shuyu |
- 文章加密
1 | {# 文章加密 #} |
- markdown文件
1 | --- |
- 图片下面的日志链接bug,在
\themes\next\layout\_macro\sidebar.swig
中
1 | {# <a href="{{ url_for(theme.menu.archives).split('||')[0] | trim }}"> #} |
- 底部分页左右标签bug,在
\themes\next\layout\_partials\pagination.swig
中
1 | {% if page.prev or page.next %} |
- 点击目录不跳转bug,在next里的js文件post-details.js
1 | $('.post-toc a').on('click', function (e) { |
- 目录只显示一级和二级bug,文章目录样式文件custom.styl文件位于
themes/next/source/css/_custom
1 | //文章目录默认展开 |
- 主题配置文件位于
themes/next/_config.yml
1 | toc: |
4. 小工具
- 本地搜索
- 主题配置文件
1 | # Local search |
- 在根目录下使用以下命令安装
1 | $ npm install hexo-generator-searchdb --save |
- 站点配置文件
1 | # 本地搜索 |
网站底部字数统计
安装插件
1 | npm install hexo-wordcount --save |
- 然后在 /themes/next/layout/_partials/footer.njk 的合适的地方写入
1 | <div class="theme-info"> |
实现字数统计和阅读需要时长显示
安装插件
1 | npm install hexo-symbols-count-time --save |
- 在主配置文件的 _config.yml 下写入
1 | symbols_count_time: |
5. 增加复制功能
NexT版本为v5.1.4,NexT主题的v6.3已有此功能
5.1 添加copy-code.swig
在themes/next/layout/_third-party/
此目录下创建copy-code.swig
- copy-code.swig
1 | {% if theme.codeblock.copy_button.enable %} |
5.2 编辑_layout.swig
在themes/next/layout/
文件下编辑_layout.swig
1 | # 要加入的代码 |
5.3 添加按钮上显示的语言
在themes/next/languages/
目录下编辑zh-Hans.yml
1 | post: |
同理en.yml
1 | post: |
5.4 编辑主题配置
在themes/next/_config.yml
下添加
1 | # Add copy button on codeblock |
5.5 生成测试
1 | hexo g |
6. 展开关闭代码
6.1 添加code-unfold.swig
在themes/next/layout/_third-party/
此目录下创建copy-code.swig
- code-unfold.swig
1 | {% if theme.codeblock.js_retract_code_btn.enable %} |
6.2 添加jquery
- 方案一:在
themes/next/_config.yml
下编辑,因为fancybox
会依赖jquery
,所以设置成true
1 | fancybox: true |
- 方案二:在
next
主题全局引用jquery
6.3 编辑_layout.swig
在themes/next/layout/
文件下编辑_layout.swig
1 | {% include '_third-party/code-unfold.swig' %} |
6.4 编辑主题配置
在themes/next/_config.yml
下添加
1 | # Add copy button on codeblock |
6.4 调用js方法
在D:\blog\themes\next\source\js\src
目录下的bootstrap.js文件添加代码
1 | $(document).ready(function () { |
6.5 生成测试
1 | hexo g |
7. 总结
在本次搭建博客中,对github pages能作为微服务器有了了解,也对自己的博客有了大致框架,遵循简洁实用的原则。