打造一个开箱即用的超级丝滑的漂亮hexo博客网站

news2025/1/19 3:00:54

打造一个开箱即用的超级丝滑的漂亮hexo博客网站

image-20231017062650020

image-20231018071709009

目录

文章目录

    • 打造一个开箱即用的超级丝滑的漂亮hexo博客网站
    • 目录
    • 文章持续更新地址
    • 鸣谢
    • hexo简介
    • hexo优缺点
      • 优点
      • 缺点
        • 👎 没有后台管理
    • 博客效果
    • 主题特性
    • 版本迭代
      • 1.原版版本迭代
      • 2.自己版本迭代
    • 贡献者
    • 主题下载
    • 🚩 博客部署(超详细)
      • 前提条件
      • 实验环境
      • 实验软件
      • 1、安装hexo
      • 2、部署rsync与nginx
        • 1.部署rsync
          • 1.ecs上配置rsync服务端
          • 2.windows client上配置rsync
          • 3.winodws同步命令
          • 注意2个密码位置
          • rsync部署参考文章
        • 2.部署nginx
      • 3、配置主题
        • 1.拉取hexo仓库
        • 2.获取`node_modules`内容
      • 4、github多端同步
        • github多端同步
        • 自己如何更新公开库
          • v1-手动版
          • v2-脚本版(==推荐==)
      • 5、创建一键推送脚本
      • 6、测试
    • 具体配置
      • 切换主题
        • `_config.yml` 文件的其它修改建议:
      • 新建分类 categories 页
      • 新建标签 tags 页
      • 新建关于我 about 页
      • 新建留言板 contact 页(可选的)
      • 新建友情链接 friends 页(可选的)
      • 新建 404 页
      • 菜单导航配置
        • 配置基本菜单导航的名称、路径url和图标icon.
        • 二级菜单配置方法
      • 代码高亮
      • 搜索
      • 中文链接转拼音(建议安装)
      • 文章字数统计插件(建议安装)
      • 添加emoji表情支持(可选的)
      • 添加 RSS 订阅支持(可选的)
      • 添加 [DaoVoice](http://www.daovoice.io/) 在线聊天功能(可选的)
      • 添加 [Tidio](https://www.tidio.com/) 在线聊天功能(可选的)
      • 修改页脚
      • 修改社交链接
      • 修改打赏的二维码图片
      • 配置音乐播放器(可选的)
      • 文章 Front-matter 介绍
        • Front-matter 选项详解
        • 最简示例
        • 最全示例
      • 自定制修改
        • 1、修改主题颜色
        • 2、修改 banner 图和文章特色图
    • 存在问题
    • 新需求
    • 其它知识
      • hexo基础数据
      • 如何升级/回退hexo版本
    • 关于我
    • 最后

文章持续更新地址

https://onedayxyy.cn/2023/10/17/2023.10.17-%E6%89%93%E9%80%A0%E4%B8%80%E4%B8%AA%E5%BC%80%E7%AE%B1%E5%8D%B3%E7%94%A8%E7%9A%84%E8%B6%85%E7%BA%A7%E4%B8%9D%E6%BB%91%E7%9A%84%E6%BC%82%E4%BA%AEhexo%E5%8D%9A%E5%AE%A2%E7%BD%91%E7%AB%99/

image-20231018074108055

鸣谢

文章来源:

👍👍👍 感谢大佬开源的这么优秀的博客主题!

大佬:http://blinkfox.com/

🇺🇸English Document | 国内访问示例 (http://blinkfox.com) | Github 部署演示示例 (https://blinkfox.github.io) | QQ 交流群1(已满): 926552981 | QQ 交流群2(推荐): 971887688

这是一个采用 Material Design 和响应式设计的 Hexo 博客主题。

image-20231018071950759

image-20231018072011598

hexo简介

hexo优缺点

优点

缺点

👎 没有后台管理

image-20231018124656233

博客效果

https://onedayxyy.cn/

image-20231017063527516

image-20231017063601459

image-20231017063640362

image-20231017063653007

image-20231017063705400

image-20231018071822658

image-20231018071709009

image-20231017063807591

主题特性

  • 简单漂亮,文章内容美观易读
  • Material Design 设计
  • 响应式设计,博客在桌面端、平板、手机等设备上均能很好的展现
  • 首页轮播文章及每天动态切换 Banner 图片
  • 瀑布流式的博客文章列表(文章无特色图片时会有 24 张漂亮的图片代替)
  • 时间轴式的归档页
  • 词云的标签页和雷达图的分类页
  • 丰富的关于我页面(包括关于我、文章统计图、我的项目、我的技能、相册等)
  • 可自定义的数据的友情链接页面
  • 支持文章置顶和文章打赏
  • 支持 MathJax
  • TOC 目录
  • 可设置复制文章内容时追加版权信息
  • 可设置阅读文章时做密码验证
  • Gitalk、Gitment、Valine 和 Disqus 评论模块(推荐使用 Gitalk
  • 集成了不蒜子统计、谷歌分析(Google Analytics)和文章字数统计等功能
  • 支持在首页的音乐播放和视频播放功能
  • 支持emoji表情,用markdown emoji语法书写直接生成对应的能跳跃的表情。
  • 支持 DaoVoice、Tidio 在线聊天功能。

image-20231018071950759

版本迭代

1.原版版本迭代

参见 CHANGELOG.md

  • v2.0.0
    • 新增了对 Hexo 5.0.0 的支持,并推荐升级使用 Hexo 5.0.0,去除了对 hexo-prism-plugin 插件的依赖,可直接使用自带的 prismjs 插件;
    • 新增了背景图功能;
    • 新增了畅言、腾讯兔小巢、哔哔、 Artitalk 等评论或说说功能;
    • 开始阅读部分行为修改;
    • 修改了 TOC 目录高度为自适应;
    • 修复了搜索的相关问题;
    • 其他小问题修改;
  • v1.3.2
    • 新增了繁体字的支持;
    • 新增了 404 页面;
    • 其他小问题修改;
  • v1.3.1
    • 新增了 kbd 样式;
    • 修复了子目录部署时词云中链接有误的问题;
    • 移除了 TOC 中的竖线;
    • 修复了首页 icon 图标中的 tooltip 不显示的问题;
    • 修复生成静态文件时,每天切换 banner 不生效的问题;
    • 更新了 miniValine 中的一些配置;
  • v1.3.0
    • 新增了支持子目录部署的功能(如:Gitee);
    • 新增了 MiniValine 评论系统;
    • 新增了 jsdelivr 的支持;
    • 修复了诸多发现的 bug;
  • v1.2.2
    • 新增了自定义文章 keywords 的功能;
    • 新增静态彩带点击切换的功能和配置;
    • 将文章字数统计、彩带和站点运行时间等功能默认设置为 false
    • 修改了文章的 description 的 meta 属性优先读取文章的 summary 属性;
    • 修改了文章标题的 HTML 标签,从 div 改成了 h1 标题;
    • 修改了页脚年份显示不正确的问题;
    • 去掉了站点运行时间中多余的 setTimeout 代码;
  • v1.2.1
    • 新增了 TOC 的展开目录层级设置和滚动条功能,防止目录较多的时候目录溢出;
    • 修改了首页的展示方式为以前的模式;
    • 修复首页按钮没有边框的问题;
    • 修复了音乐及吸底模式、视频、推荐文章等不激活时仍然生成首页卡片的问题;
    • 修复 wordCount 插件未安装的问题,修改了部分配置;
    • 修复音乐的 JSON 配置中有单引号的情况页面不显示的音乐的问题
    • 修复标签云在Hexo4.0下链接失效的问题;
  • v1.2.0
    • 新增了 DaoVoice、Tidio 的在线聊天功能;
    • 新增了两级菜单的功能;
    • 新增了打字效果的副标题;
    • 新增了网页内容预加载的功能;
    • 新增了首页 banner 是否每日切换的配置功能;
    • 新增了显示 ICP 备案信息的功能,默认未开启;
    • 新增了百度分析的配置;
    • 新增了代码块的语言显示、一键复制、显示行号等功能;
    • 新增了首页轮播图和推荐文章可自定义配置的功能;
    • 新增了文章页面显示更新日期;
    • 新增了转载规则的图标;
    • 修改了分享的布局和显示方式;
    • 升级更新了部分依赖库的版本;
    • 其他细节修改和优化;
  • v1.1.0
    • 新增了 emoji 的支持;
    • 新增了站点运行时间统计及配置;
    • 新增了留言板的功能,默认未开启;
    • 新增了 TwitterFacebook、知乎的社交链接;
    • 更新了 Valine 的版本为最新版;
    • 其他小细节的修改;
  • v1.0.4
    • 新增了能为每篇文章都自定义转载规则的功能;
    • 修复上一页、下一页的自定义 summary 不显示的问题;
    • 修复了友情链接显示错位的问题,改为了瀑布流的布局方式;
    • 其他小细节 bug 的修改;
  • v1.0.3
    • 新增了TOC展开、收缩的按钮和相关配置,默认显示此按钮;
  • v1.0.2
    • 升级了 Materialize 框架版本为1.0.0,重构和修改了升级过程中的部分文件或问题;
    • 新增了首页封面的全屏轮播特效,可以将更重要的文章设置到首页轮播中;
    • 修复首页第一个按钮是中文的问题
    • 修复了 iPhone 上点击搜索输入获取焦点的问题;
    • 修复了 iPhone 上输入框获取焦点后页面放大的问题;
    • 修复一些文章或 UI 显示问题;
  • v1.0.1
    • 调整 cssjs 的文件请求路径在主题的_config.yml中配置,便于你更快捷的配置自己的 CDN;
    • 新增代码是否折行为可配置,默认为折行;
    • 默认激活 TOC 功能,并新增为某篇文章关闭 TOCFront-matter 配置选项;
    • 修复文章滚动时,高亮的目录选项不准确的问题;
    • IOS下移除搜索框自动获得焦点属性,防止自动获得焦点后导致视图上移;
  • v1.0.0
    • 新增了所有基础功能;

2.自己版本迭代

image-20231018073002311

  1. v2.0.0-hexo-theme-matery-2023.10.18 -m “功能基本满足博客需求,使用体验极度丝滑”

  2. v2.0.0-hexo-theme-matery-2023.10.18 -m “将推送最新数据到公开库输出为一个脚本,可以一键执行”

    具体步骤见如下步骤:

    image-20231018124140307

  3. x

贡献者

感谢下面列出的贡献者,没有他们,hexo-theme-matery 不会这么完美。

  • @HarborZeng
  • @shw2018
  • @L1cardo
  • @Five-great

主题下载

本主题推荐你使用 Hexo 5.0.0 及以上的版本。如果,你已经有一个自己的 Hexo 博客了,建议你将 Hexo 升级到最新稳定的版本。

点击 这里 下载 master 分支的最新稳定版的代码,解压缩后,将 hexo-theme-matery 的文件夹复制到你 Hexo 的 themes 文件夹中即可。

当然你也可以在你的 themes 文件夹下使用 git clone 命令来下载:

git clone https://github.com/blinkfox/hexo-theme-matery.git

🚩 博客部署(超详细)

更新于:2023年10月17日15:12:20

前提条件

  • 具备nodejs、git环境;
  • 拥有github账号(或者gitee);
  • 具有1台云服务器;
  • 具有一个域名;(可选)

实验环境

hexo 5.3.0
node v18.18.0
win10

实验软件

链接:https://pan.baidu.com/s/1cQ-u6eIDwLYLta9xUKkQUw?pwd=0820
提取码:0820

2023.10.18-hexo-theme-matery-实验软件

image-20231018073942064

image-20231018073846842

1、安装hexo

  • 安装hexo

在任何地方,单击鼠标右键,选择“git Bash”,然后在命令行里面输入npm install hexo -g:

npm install hexo -g

image-20210516063239163

次小部分,仅仅作为测试自己本地hexo的可用性,具体本次主题涉及配置,请看后文。

  • 配置本地hexo博客目录

然后,选择一个位置(例如D盘),新建一个文件夹,例如“blog_github”,这个文件夹将是你的博客的根目录,以后与博客有关的所有文件都是存放在这里。进入你新建的这个文件夹,然后单击鼠标右键,打开git命令行(知道怎么打开吧,选择”git Bash”),输入hexo init,这个时候,你会发现多了很多文件夹。如下所示:

hexo 初始化

hexo init

image-20210516064342004

安装插件:,在刚才打开的命令行里面输入npm install:

image-20210516064524047

见证奇迹的时刻

接着我们输入hexo g生成静态网页,然后输入hexo s打开本地服务器,然后浏览器打开http://localhost:4000/,就可以预览我们的博客啦,如图:

显示以下信息说明操作正确:

INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.

常用命令:
Create a new post:
	$ hexo new "My New Post"	
Generate static files:
	$ hexo generate == 简写hexo g
Run server:
	$ hexo server == 简写hexo s
Deploy to remote sites:
	$ hexo deploy == 简写hexo d
	
我们以后常用到的Hexo命令:
$ hexo s等价于 hexo server #Hexo 会监视文件变动并自动更新,除修改站点配置文件外,无须重启服务器,直接刷新网页即可生效。
$ hexo g 等价于 hexo generate #生成静态网页 (执行 $ hexo g后会在站点根目录下生成public文件夹, hexo会将”/blog/source/“ 下面的.md后缀的文件编译为.html后缀的文件,存放在”/blog/public/ “ 路径下)
$ hexo d 等价于 hexo deploy #将本地数据部署到远端服务器(如github)
$ hexo clean #清除缓存 ,网页正常情况下可以忽略此条命令,执行该指令后,会删掉站点根目录下的public文件夹

image-20210516064814703

image-20210516064835538

image-20210516064851308

image-20210516064902124

按ctrl+c关闭本地服务器。

image-20210516071543151

到目前为止,我们在本地创建博客框架的过程就完成了。

2、部署rsync与nginx

1.部署rsync

rsync使用背景

rsync在云服务器和本地pc端都要安装下,方面后续推送下本地pc的静态数据。

winodws pc写好的东西,同步到linux服务器上,单向同步需求。

1.ecs上配置rsync服务端
  • 服务端配置,安装rsync
# 检查是否安装了 rsync
rpm -qa|grep rsync

# 如果没有安装的话,进行安装
yum install rsync

# 将 rsync 设置成开启自启,并启动
systemctl enable rsyncd
systemctl start rsyncd
  • 修改rsync配置文件
[root@mkdocs-server html]# vim /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# 进行通信的端口,如果 firewall 打开的话,需要将对应的端口添加进去
port=8730

# 日志文件
log file=/var/log/rsync.log

# rsync 的进程 id
pid file=/var/run/rsync.pid

# 要同步的模块,这里一般以项目名命名
[cmi]

# 同步的目标文件夹
path=/root/rsync

# rsync daemon 在传输前是否切换到指定的 path 目录下,并将其监禁在内,用于增加传输的安全性
use chroot=no

# 指定最大的连接数
max connections=4

# yes 表示只读本地文件无法同步到服务器
read only=no

# 客户端请求显示模块列表时,该模块是否显示出来
list=true

# 服务运行时的用户
uid=root

# 服务运行时的用户组
gid=root

# 进行验证时的用户名,必须是系统存在的用户
auth users = root 

# 连接用户时的密码
secrets file=/etc/rsyncd.passwd

# 允许的 ip
hosts allow=*
[root@mkdocs-server html]# 

注意:

# 同步的目标文件夹
path=/root/rsync

# 连接用户时的密码
secrets file=/etc/rsyncd.passwd
# 1、创建目标的文件夹
mkdir /root/rsync

# 2、创建密码
# 创建文件夹
vim /etc/rsyncd.passwd
# 写入密码
echo "root:123456" > /etc/rsyncd.passwd #这里写入你自己云服务器的密码就行!!!

#更改文件权限
chmod 600 /etc/rsyncd.passwd
2.windows client上配置rsync
  • 下载地址

https://www.itefix.net/cwrsync-client

image-20230914223602245

image-20230914223643864

  • 安装rsync

双击安装。(将次软件的.exe文件路径添加到自己pc的PATH里。)

3.winodws同步命令
rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/mkdocs/site root@47.97.48.237::cmi/

说明:

#最新命令:
rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/mkdocs/site root@47.97.48.237::cmi/


-a:归档模式,用于保持文件的属性、权限、时间戳等。
-v:显示详细输出,让您了解文件同步的进度和操作。
-p:显示文件传输的进度条和实时速度。
-z:在传输过程中压缩数据,减少网络带宽的使用。
-r:递归复制目录及其内容。
-u:只复制源中更新或新增的文件到目标目录。
-h:可读性大小。
--delete:删除目标目录中不在源中存在的文件和目录。

# cmi_password.txt 密码文件 写入 Linux 端配置的密码即可
# cmi 指代模块,我们这边正好按照

image-20230914223936222

⚠️ 注意:

下面就是 在 windows server 创建计划任务定时执行了。(目前暂不需要)

自己的需求是:编写完文档后,一键执行上传操作。

  • 本次同步命令如下:

最新的推送命令见下文。

::添加自己要执行的任务
echo  Push winodws hexo static data to ecs...
rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/hexo/public root@47.97.48.237::cmi/

image-20231017125258749

注意2个密码位置
  • ecs root密码

image-20230916075442783

  • windows上存放ecs密码位置

image-20230916075512684

rsync部署参考文章

https://blog.csdn.net/qq_39007838/article/details/127562636

image-20230914204511865

2.部署nginx

在ecs上配置。

  • 部署
yum install nginx -y

systemctl enable nginx
systemctl start nginx
  • 配置nginx

http配置:

[root@mkdocs-server ~]# vim  /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80;
        listen       [::]:80;
        server_name  onedayxyy.cn;
        #root         /usr/share/nginx/html;
        root         /root/rsync/public;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2;
#        listen       [::]:443 ssl http2;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers HIGH:!aNULL:!MD5;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

image-20231017073350585

https配置:

注意:我这里的配置为最终版,配置了https、强制跳转https登配置,大家可以参考。

配置效果如下图所示:

image-20231016102446940

完整配置如下:

[root@hexo-blog ~]# cat  /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user root;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

#    server {
#        listen       80;
#        listen       [::]:80;
#        server_name  onedayxyy.cn;
#        #root         /usr/share/nginx/html;
#        root         /root/rsync/public;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#        location = /404.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#        location = /50x.html {
#        }
#
#        #将所有HTTP请求通过rewrite指令重定向到HTTPS。
#       rewrite ^(.*)$ https://$host$1;
#       location / {
#               index index.html index.htm;
#       }
#
#    }

# Settings for a TLS enabled server.
#
    server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        server_name  www.onedayxyy.cn;
        root         /root/rsync/public;

        ssl_certificate "cert/www.onedayxyy.cn.pem";
        ssl_certificate_key "cert/www.onedayxyy.cn.key";

        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        #ssl_ciphers HIGH:!aNULL:!MD5;
        #自定义设置使用的TLS协议的类型以及加密套件(以下为配置示例,请您自行评估是否需要配置)
        #TLS协议版本越高,HTTPS通信的安全性越高,但是相较于低版本TLS协议,高版本TLS协议对浏览器的兼容性较差。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        ssl_prefer_server_ciphers on;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }


    }

  server {
    listen 80;
    #填写证书绑定的域名
    server_name www.onedayxyy.cn;
    root         /root/rsync/public;
    #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite ^(.*)$ https://$host$1;
    location / {
        index index.html index.htm;
    }
  }


}

[root@hexo-blog ~]#

修改完成后,按Esc键、输入**:wq并按Enter**键,保存修改后的配置文件并退出编辑模式。

执行以下命令,重启Nginx服务。

systemctl reload nginx

3、配置主题

1.拉取hexo仓库
  • 另外,这里之前在github上创建了一个hexo-theme-matery-github-public类型仓库

git@github.com:OnlyOnexl/hexo-theme-matery-github-public.git

专门存放公开分享给别人的本主题最新配置,别人clone次仓库后,按照这个hexo博客部署文档,立马可以部署属于自己的一个博客。

image-20231018073012157

  • 来到自己的d盘:

拉取代码:

git clone git@github.com:OnlyOnexl/hexo-theme-matery-github-public.git

image-20231017123908290

2.获取node_modules内容
  • 本地创建一个临时目录来初始化,然后获取node_modules内容

初始化命令:hexo init

image-20231017121531605

  • 然后将生成的node_modules拷贝到hexo根目录下:/d/hexo

image-20231017151850929

  • 提前安装好几个插件
cd /d/hexo-theme-matery-github-public

npm install hexo-generator-search --save
npm install hexo-filter-github-emojis --save
npm install hexo-generator-feed --save

注意:这里一定要提前安装好这3个插件,不然hexo-theme-matery里配置了插件内容,pc端没安装的话,这里运行会报错的!

  • 安装好本主题后,运行hexo s命令进行测试

image-20231017125619417

image-20231017125600642

4、github多端同步

github多端同步

image-20231017210529461

  • github上创建github-hexo-blog-private私有仓库

image-20231017065913021

  • 推送本地数据到github仓库

注意:这里利用github的是有仓库来保存自己的本地所有博客元数据、hexo配置数据。

echo "# github-hexo-blog-private" >> README.md
git init
git add -A
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:OnlyOnexl/github-hexo-blog-private.git
git push -u origin main

image-20231017071113775

image-20231017071050383

image-20231017071146844

自己如何更新公开库
v1-手动版

虽然要手动操作一些,但是还可以接受的。

image-20231017210329409

image-20231017213022370

将如下/d/hexo目录下涉及文件全部拷贝到/d/hexo-theme-matery-github-public目录下,然后删除D:\hexo-theme-matery-github-public\source\_posts目录下多余的文件,删除D:\hexo-theme-matery-github-public\source\images目录里自己原来的md本地图片,提交即可。

image-20231017204132949

image-20231017204744600

image-20231017204656584

image-20231017204720068

提交:

git pull
git add -A
git commit -m "push-hexo-theme-matery"
git push

image-20231017205121346

在github仓库里做好tag:

image-20231017205916144

$ git tag -a v1-hexo-theme-matery-2023.10.17 -m "v1-hexo-theme-matery-2023.10.17"
$ git push origin v1-hexo-theme-matery-2023.10.17

image-20231017205819192

image-20231017205830069

验证:

image-20231017205953720

📌 次部分代码汇总:

cd /d/hexo-theme-matery-github-public
git pull
git add -A
git commit -m "push-hexo-theme-matery"
git push 
git tag -a v2-hexo-theme-matery-2023.10.17 -m "v2-hexo-theme-matery-2023.10.17"
git push origin v2-hexo-theme-matery-2023.10.17
v2-脚本版(推荐)

以下脚本可以实现的需求是:

我能够一键将本地博客源代码推送到自己的公开库,特别方便。

  • 在自己pc的d盘创建如下目录;
mkdir  -p /d/hexo-tmp  
  • 然后将本次代码写到/etc/profile
#hexo-theme-matery-github-public推送命令
alias pp="""
#mkdir  -p /d/hexo-tmp  
rm -rf /d/hexo-tmp/*

cd /d/hexo-theme-matery-github-public

cp /d/hexo/_config.landscape.yml /d/hexo-tmp
cp /d/hexo/_config.yml /d/hexo-tmp
cp /d/hexo/CNAME /d/hexo-tmp
cp /d/hexo/db.json /d/hexo-tmp
cp /d/hexo/package.json /d/hexo-tmp
cp /d/hexo/package-lock.json /d/hexo-tmp
cp -R /d/hexo/public /d/hexo-tmp
cp -R /d/hexo/resource /d/hexo-tmp
cp -R /d/hexo/scaffolds /d/hexo-tmp
cp -R /d/hexo/source /d/hexo-tmp
cp -R /d/hexo/themes /d/hexo-tmp
cp -R /d/hexo/xyy /d/hexo-tmp

cd /d/hexo-theme-matery-github-public

rm -rf  /d/hexo-theme-matery-github-public/_config.landscape.yml
rm -rf  /d/hexo-theme-matery-github-public/_config.yml
rm -rf  /d/hexo-theme-matery-github-public/CNAME
rm -rf  /d/hexo-theme-matery-github-public/db.json
rm -rf  /d/hexo-theme-matery-github-public/package.json
rm -rf  /d/hexo-theme-matery-github-public/package-lock.json
rm -rf   /d/hexo-theme-matery-github-public/public
rm -rf   /d/hexo-theme-matery-github-public/resource
rm -rf   /d/hexo-theme-matery-github-public/scaffolds
rm -rf   /d/hexo-theme-matery-github-public/source
rm -rf   /d/hexo-theme-matery-github-public/themes
rm -rf   /d/hexo-theme-matery-github-public/xyy
rm -rf   /d/hexo-theme-matery-github-public/README.md

mv  /d/hexo-tmp/* /d/hexo-theme-matery-github-public/
rm -rf /d/hexo-theme-matery-github-public/source/_posts/*
rm -rf /d/hexo-theme-matery-github-public/source/images/*
mv /d/hexo-theme-matery-github-public/resource/README.md /d/hexo-theme-matery-github-public
mv /d/hexo-theme-matery-github-public/resource/2022.1.25-我如果爱你.md /d/hexo-theme-matery-github-public/source/_posts
mv /d/hexo-theme-matery-github-public/resource/xyy.png /d/hexo-theme-matery-github-public/source/images

cd /d/hexo-theme-matery-github-public
git pull
git add -A
git commit -m "push-hexo-theme-matery"
git push 
git tag -d v2.0.0-hexo-theme-matery-2023.10.18
git push --delete origin v2.0.0-hexo-theme-matery-2023.10.18

git tag -a v2.0.0-hexo-theme-matery-2023.10.18 -m "功能基本满足博客需求,使用体验极度丝滑"
git push origin v2.0.0-hexo-theme-matery-2023.10.18
"""

本次新创建如下资源文件:

image-20231018123818637

  • 测试效果

执行pp命令

image-20231018123858114

image-20231018123917764

image-20231018124022150

image-20231018124048066

image-20231018124059974

完美实现需求。😘

5、创建一键推送脚本

在hexo根目录下创建如下脚本文件:

image-20231017073742487

hexo.bat

::添加自己要执行的任务
echo  Push winodws hexo static data to ecs...
rsync.exe -avPzruh --delete --port 8730 --password-file=/cygdrive/D/password.txt /cygdrive/D/hexo/public root@47.97.48.237::cmi/

profile.sh

$ vim /etc/profile

#一键推送并上传
alias xyy='''
sh /d/hexo/xyy/xyy.sh
'''

#本地构建hexo静态数据
alias hg='''
cd /d/hexo
hexo g
'''

#本地构建hexo
alias hs='''
cd /d/hexo
hexo s
'''

alias push="""
cd /d/hexo
git status
echo "!"
git pull
echo "!"
git add -A
git commit -m "push-hexo-blog-metadata"
git push
echo "!"
xyy
git status
echo "!"
xyy
"""

alias pull="""
cd /d/hexo
git pull
"""

alias gs="""
cd /d/hexo
git status
"""

xyy.sh

#!/bin/sh

cd /d/hexo/ && hexo g
echo "hexo: hexo本地数据拷贝&构建成功!"

echo ""
echo ""
echo "推送winodws site数据到ecs:"
echo "-------------------------------------------------------------------"
echo "x"
echo "y"
echo "y"
echo "我"
echo "想"
echo "你"
echo "-------------------------------------------------------------------"

/d/hexo/xyy/hexo.bat
echo "rsync: rsync数据winodws-->ecs推送成功!"
echo ""
echo ""

echo "重新加载ecs上nginx进程:"
echo "-------------------------------------------------------------------"
echo "x"
echo "y"
echo "y"
echo "我"
echo "想"
echo "你"
echo "-------------------------------------------------------------------"

ssh root@47.97.48.237 'systemctl reload nginx'
echo "hexo: ecs上部署站点成功!"
echo " "
echo " "

echo "汇总hexo数据目录大小:"
echo "winodws上hexo元数据总大小:"
du -sh /d/hexo/source|awk '{print $1}'

echo "!"
echo "winodws上site大小:"
du -sh /d/hexo/public|awk '{print $1}'

echo "ecs上hexo静态数据大小:"
ssh root@47.97.48.237 du -sh /root/rsync/public |awk '{print $1}'

echo "-------------------------------------------------------------------"
echo "xyy, i miss you!"
echo "-------------------------------------------------------------------"
echo "推送结束!"

记得在自己的winodws的linux环境下配置/etc/profile文件:

image-20231017151204203

6、测试

  • 自己本地博客数据

image-20231017152524247

  • 博客部署,测试正常

image-20231017074112894

  • 博客元数据推送,测试正常

image-20231017152613251

image-20231017152650663

  • 访问博客,测试正常

https://onedayxyy.cn/

image-20231017063527516

至此,部署完成,欢迎享用。

具体配置

切换主题

修改 Hexo 根目录下的 _config.ymltheme 的值:theme: hexo-theme-matery

_config.yml 文件的其它修改建议:
  • 请修改 _config.ymlurl 的值为你的网站主 URL(如:http://xxx.github.io)。
  • 建议修改两个 per_page 的分页条数值为 6 的倍数,如:1218 等,这样文章列表在各个屏幕下都能较好的显示。
  • 如果你是中文用户,则建议修改 language 的值为 zh-CN

新建分类 categories 页

categories 页是用来展示所有分类的页面,如果在你的博客 source 目录下还没有 categories/index.md 文件,那么你就需要新建一个,命令如下:

hexo new page "categories"

编辑你刚刚新建的页面文件 /source/categories/index.md,至少需要以下内容:

---
title: categories
date: 2018-09-30 17:25:30
type: "categories"
layout: "categories"
---

新建标签 tags 页

tags 页是用来展示所有标签的页面,如果在你的博客 source 目录下还没有 tags/index.md 文件,那么你就需要新建一个,命令如下:

hexo new page "tags"

编辑你刚刚新建的页面文件 /source/tags/index.md,至少需要以下内容:

---
title: tags
date: 2018-09-30 18:23:38
type: "tags"
layout: "tags"
---

新建关于我 about 页

about 页是用来展示关于我和我的博客信息的页面,如果在你的博客 source 目录下还没有 about/index.md 文件,那么你就需要新建一个,命令如下:

hexo new page "about"

编辑你刚刚新建的页面文件 /source/about/index.md,至少需要以下内容:

---
title: about
date: 2018-09-30 17:25:30
type: "about"
layout: "about"
---

新建留言板 contact 页(可选的)

contact 页是用来展示留言板信息的页面,如果在你的博客 source 目录下还没有 contact/index.md 文件,那么你就需要新建一个,命令如下:

hexo new page "contact"

编辑你刚刚新建的页面文件 /source/contact/index.md,至少需要以下内容:

---
title: contact
date: 2018-09-30 17:25:30
type: "contact"
layout: "contact"
---

:本留言板功能依赖于第三方评论系统,请激活你的评论系统才有效果。并且在主题的 _config.yml 文件中,第 1921 行的“菜单”配置,取消关于留言板的注释即可。

新建友情链接 friends 页(可选的)

friends 页是用来展示友情链接信息的页面,如果在你的博客 source 目录下还没有 friends/index.md 文件,那么你就需要新建一个,命令如下:

hexo new page "friends"

编辑你刚刚新建的页面文件 /source/friends/index.md,至少需要以下内容:

---
title: friends
date: 2018-12-12 21:25:30
type: "friends"
layout: "friends"
---

同时,在你的博客 source 目录下新建 _data 目录,在 _data 目录中新建 friends.json 文件,文件内容如下所示:

[{
    "avatar": "http://image.luokangyuan.com/1_qq_27922023.jpg",
    "name": "码酱",
    "introduction": "我不是大佬,只是在追寻大佬的脚步",
    "url": "http://luokangyuan.com/",
    "title": "前去学习"
}, {
    "avatar": "http://image.luokangyuan.com/4027734.jpeg",
    "name": "闪烁之狐",
    "introduction": "编程界大佬,技术牛,人还特别好,不懂的都可以请教大佬",
    "url": "https://blinkfox.github.io/",
    "title": "前去学习"
}, {
    "avatar": "http://image.luokangyuan.com/avatar.jpg",
    "name": "ja_rome",
    "introduction": "平凡的脚步也可以走出伟大的行程",
    "url": "https://me.csdn.net/jlh912008548",
    "title": "前去学习"
}]

新建 404 页

如果在你的博客 source 目录下还没有 404.md 文件,那么你就需要新建一个

hexo new page 404

编辑你刚刚新建的页面文件 /source/404/index.md,至少需要以下内容:

---
title: 404
date: 2018-09-30 17:25:30
type: "404"
layout: "404"
description: "Oops~,我崩溃了!找不到你想要的页面 :("
---

菜单导航配置

配置基本菜单导航的名称、路径url和图标icon.

1.菜单导航名称可以是中文也可以是英文(如:Index主页)
2.图标icon 可以在Font Awesome 中查找

menu:
  Index:
    url: /
    icon: fas fa-home
  Tags:
    url: /tags
    icon: fas fa-tags
  Categories:
    url: /categories
    icon: fas fa-bookmark
  Archives:
    url: /archives
    icon: fas fa-archive
  About:
    url: /about
    icon: fas fa-user-circle
  Friends:
    url: /friends
    icon: fas fa-address-book
二级菜单配置方法

如果你需要二级菜单则可以在原基本菜单导航的基础上如下操作

  1. 在需要添加二级菜单的一级菜单下添加children关键字(如:About菜单下添加children)
  2. children下创建二级菜单的 名称name,路径url和图标icon.
  3. 注意每个二级菜单模块前要加 -.
  4. 注意缩进格式
menu:
  Index:
    url: /
    icon: fas fa-home
  Tags:
    url: /tags
    icon: fas fa-tags
  Categories:
    url: /categories
    icon: fas fa-bookmark
  Archives:
    url: /archives
    icon: fas fa-archive
  About:
    url: /about
    icon: fas fa-user-circle-o
  Friends:
    url: /friends
    icon: fas fa-address-book
  Medias:
    icon: fas fa-list
    children:
      - name: Music
        url: /music
        icon: fas fa-music
      - name: Movies
        url: /movies
        icon: fas fa-film
      - name: Books
        url: /books
        icon: fas fa-book
      - name: Galleries
        url: /galleries
        icon: fas fa-image

执行 hexo clean && hexo g 重新生成博客文件,然后就可以在文章中对应位置看到你用emoji语法写的表情了。

代码高亮

从 Hexo5.0 版本开始自带了 prismjs 代码语法高亮的支持,本主题对此进行了改造支持。

如果你的博客中曾经安装过 hexo-prism-plugin 的插件,那么你须要执行 npm uninstall hexo-prism-plugin 来卸载掉它,否则生成的代码中会有 {} 的转义字符。

然后,修改 Hexo 根目录下 _config.yml 文件中 highlight.enable 的值为 false,并将 prismjs.enable 的值设置为 true,主要配置如下:

highlight:
  enable: false
  line_number: true
  auto_detect: false
  tab_replace: ''
  wrap: true
  hljs: false
prismjs:
  enable: true
  preprocess: true
  line_number: true
  tab_replace: ''

主题中默认的 prismjs 主题是 Tomorrow Night,如果你想定制自己的主题,可以前往 prismjs 下载页面 定制下载自己喜欢的主题 css 文件,然后将此 css 主题文件取名为 prism.css,替换掉 hexo-theme-matery 主题文件夹中的 source/libs/prism/prism.css 文件即可。

搜索

本主题中还使用到了 hexo-generator-search 的 Hexo 插件来做内容搜索,安装命令如下:

npm install hexo-generator-search --save

在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:

search:
  path: search.xml
  field: post

中文链接转拼音(建议安装)

如果你的文章名称是中文的,那么 Hexo 默认生成的永久链接也会有中文,这样不利于 SEO,且 gitment 评论对中文链接也不支持。我们可以用 hexo-permalink-pinyin Hexo 插件使在生成文章时生成中文拼音的永久链接。

安装命令如下:

npm i hexo-permalink-pinyin --save

在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:

permalink_pinyin:
  enable: true
  separator: '-' # default: '-'

:除了此插件外,hexo-abbrlink 插件也可以生成非中文的链接。

文章字数统计插件(建议安装)

如果你想要在文章中显示文章字数、阅读时长信息,可以安装 hexo-wordcount插件。

安装命令如下:

npm i --save hexo-wordcount

然后只需在本主题下的 _config.yml 文件中,将各个文章字数相关的配置激活即可:

postInfo:
  date: true
  update: false
  wordCount: false # 设置文章字数统计为 true.
  totalCount: false # 设置站点文章总字数统计为 true.
  min2read: false # 阅读时长.
  readCount: false # 阅读次数.

添加emoji表情支持(可选的)

本主题新增了对emoji表情的支持,使用到了 hexo-filter-github-emojis 的 Hexo 插件来支持 emoji表情的生成,把对应的markdown emoji语法(::,例如::smile:)转变成会跳跃的emoji表情,安装命令如下:

npm install hexo-filter-github-emojis --save

在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:

githubEmojis:
  enable: true
  className: github-emoji
  inject: true
  styles:
  customEmojis:

添加 RSS 订阅支持(可选的)

本主题中还使用到了 hexo-generator-feed 的 Hexo 插件来做 RSS,安装命令如下:

npm install hexo-generator-feed --save

在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项:

feed:
  type: atom
  path: atom.xml
  limit: 20
  hub:
  content:
  content_limit: 140
  content_limit_delim: ' '
  order_by: -date

执行 hexo clean && hexo g 重新生成博客文件,然后在 public 文件夹中即可看到 atom.xml 文件,说明你已经安装成功了。

添加 DaoVoice 在线聊天功能(可选的)

前往 DaoVoice 官网注册并且获取 app_id,并将 app_id 填入主题的 _config.yml 文件中。

添加 Tidio 在线聊天功能(可选的)

前往 Tidio 官网注册并且获取 Public Key,并将 Public Key 填入主题的 _config.yml 文件中。

修改页脚

页脚信息可能需要做定制化修改,而且它不便于做成配置信息,所以可能需要你自己去再修改和加工。修改的地方在主题文件的 /layout/_partial/footer.ejs 文件中,包括站点、使用的主题、访问量等。

修改社交链接

在主题的 _config.yml 文件中,默认支持 QQGitHub 和邮箱等的配置,你可以在主题文件的 /layout/_partial/social-link.ejs 文件中,新增、修改你需要的社交链接地址,增加链接可参考如下代码:

<% if (theme.socialLink.github) { %>
    <a href="<%= theme.socialLink.github %>" class="tooltipped" target="_blank" data-tooltip="访问我的GitHub" data-position="top" data-delay="50">
        <i class="fab fa-github"></i>
    </a>
<% } %>

其中,社交图标(如:fa-github)你可以在 Font Awesome 中搜索找到。以下是常用社交图标的标识,供你参考:

  • Facebook: fab fa-facebook
  • Twitter: fab fa-twitter
  • Google-plus: fab fa-google-plus
  • Linkedin: fab fa-linkedin
  • Tumblr: fab fa-tumblr
  • Medium: fab fa-medium
  • Slack: fab fa-slack
  • Sina Weibo: fab fa-weibo
  • Wechat: fab fa-weixin
  • QQ: fab fa-qq
  • Zhihu: fab fa-zhihu

注意: 本主题中使用的 Font Awesome 版本为 5.11.0

修改打赏的二维码图片

在主题文件的 source/medias/reward 文件中,你可以替换成你的的微信和支付宝的打赏二维码图片。

配置音乐播放器(可选的)

要支持音乐播放,在主题的 _config.yml 配置文件中激活music配置即可:

# 是否在首页显示音乐
music:
  enable: true
  title:     	    # 非吸底模式有效
    enable: true
    show: 听听音乐
  server: netease   # require music platform: netease, tencent, kugou, xiami, baidu
  type: playlist    # require song, playlist, album, search, artist
  id: 503838841     # require song id / playlist id / album id / search keyword
  fixed: false      # 开启吸底模式
  autoplay: false   # 是否自动播放
  theme: '#42b983'
  loop: 'all'       # 音频循环播放, 可选值: 'all', 'one', 'none'
  order: 'random'   # 音频循环顺序, 可选值: 'list', 'random'
  preload: 'auto'   # 预加载,可选值: 'none', 'metadata', 'auto'
  volume: 0.7       # 默认音量,请注意播放器会记忆用户设置,用户手动设置音量后默认音量即失效
  listFolded: true  # 列表默认折叠

server可选netease(网易云音乐),tencent(QQ音乐),kugou(酷狗音乐),xiami(虾米音乐),

baidu(百度音乐)。

type可选song(歌曲),playlist(歌单),album(专辑),search(搜索关键字),artist(歌手)

id获取方法示例: 浏览器打开网易云音乐,点击我喜欢的音乐歌单,浏览器地址栏后面会有一串数字,playlistid

即为这串数字。

文章 Front-matter 介绍

Front-matter 选项详解

Front-matter 选项中的所有内容均为非必填的。但我仍然建议至少填写 titledate 的值。

配置选项默认值描述
titleMarkdown 的文件标题文章标题,强烈建议填写此选项
date文件创建时的日期时间发布时间,强烈建议填写此选项,且最好保证全局唯一
author_config.yml 中的 author文章作者
imgfeatureImages 中的某个值文章特征图,推荐使用图床(腾讯云、七牛云、又拍云等)来做图片的路径.如: http://xxx.com/xxx.jpg
toptrue推荐文章(文章是否置顶),如果 top 值为 true,则会作为首页推荐文章
coverfalsev1.0.2版本新增,表示该文章是否需要加入到首页轮播封面中
coverImgv1.0.2版本新增,表示该文章在首页轮播封面需要显示的图片路径,如果没有,则默认使用文章的特色图片
password文章阅读密码,如果要对文章设置阅读验证密码的话,就可以设置 password 的值,该值必须是用 SHA256 加密后的密码,防止被他人识破。前提是在主题的 config.yml 中激活了 verifyPassword 选项
toctrue是否开启 TOC,可以针对某篇文章单独关闭 TOC 的功能。前提是在主题的 config.yml 中激活了 toc 选项
mathjaxfalse是否开启数学公式支持 ,本文章是否开启 mathjax,且需要在主题的 _config.yml 文件中也需要开启才行
summary文章摘要,自定义的文章摘要内容,如果这个属性有值,文章卡片摘要就显示这段文字,否则程序会自动截取文章的部分内容作为摘要
categories文章分类,本主题的分类表示宏观上大的分类,只建议一篇文章一个分类
tags文章标签,一篇文章可以多个标签
keywords文章标题文章关键字,SEO 时需要
reprintPolicycc_by文章转载规则, 可以是 cc_by, cc_by_nd, cc_by_sa, cc_by_nc, cc_by_nc_nd, cc_by_nc_sa, cc0, noreprint 或 pay 中的一个

注意:

  1. 如果 img 属性不填写的话,文章特色图会根据文章标题的 hashcode 的值取余,然后选取主题中对应的特色图片,从而达到让所有文章的特色图各有特色
  2. date 的值尽量保证每篇文章是唯一的,因为本主题中 GitalkGitment 识别 id 是通过 date 的值来作为唯一标识的。
  3. 如果要对文章设置阅读验证密码的功能,不仅要在 Front-matter 中设置采用了 SHA256 加密的 password 的值,还需要在主题的 _config.yml 中激活了配置。有些在线的 SHA256 加密的地址,可供你使用:开源中国在线工具、chahuo、站长工具。
  4. 您可以在文章md文件的 front-matter 中指定 reprintPolicy 来给单个文章配置转载规则

以下为文章的 Front-matter 示例。

最简示例
---
title: typora-vue-theme主题介绍
date: 2018-09-07 09:25:00
---
最全示例
---
title: typora-vue-theme主题介绍
date: 2018-09-07 09:25:00
author: 赵奇
img: /source/images/xxx.jpg
top: true
cover: true
coverImg: /images/1.jpg
password: 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
toc: false
mathjax: false
summary: 这是你自定义的文章摘要内容,如果这个属性有值,文章卡片摘要就显示这段文字,否则程序会自动截取文章的部分内容作为摘要
categories: Markdown
tags:
  - Typora
  - Markdown
---

自定制修改

在本主题的 _config.yml 中可以修改部分自定义信息,有以下几个部分:

  • 菜单
  • 我的梦想
  • 首页的音乐播放器和视频播放器配置
  • 是否显示推荐文章名称和按钮配置
  • faviconLogo
  • 个人信息
  • TOC 目录
  • 文章打赏信息
  • 复制文章内容时追加版权信息
  • MathJax
  • 文章字数统计、阅读时长
  • 点击页面的’爱心’效果
  • 我的项目
  • 我的技能
  • 我的相册
  • GitalkGitmentValinedisqus 评论配置
  • 不蒜子统计和谷歌分析(Google Analytics
  • 默认特色图的集合。当文章没有设置特色图时,本主题会根据文章标题的 hashcode 值取余,来选择展示对应的特色图

我认为个人博客应该都有自己的风格和特色。如果本主题中的诸多功能和主题色彩你不满意,可以在主题中自定义修改,很多更自由的功能和细节点的修改难以在主题的 _config.yml 中完成,需要修改源代码才来完成。以下列出了可能对你有用的地方:

1、修改主题颜色

在主题文件的 /source/css/matery.css 文件中,搜索 .bg-color 来修改背景颜色:

/* 整体背景颜色,包括导航、移动端的导航、页尾、标签页等的背景颜色. */
.bg-color {
    background-image: linear-gradient(to right, #4cbf30 0%, #0f9d58 100%);
}

@-webkit-keyframes rainbow {
   /* 动态切换背景颜色. */
}

@keyframes rainbow {
    /* 动态切换背景颜色. */
}
2、修改 banner 图和文章特色图

你可以直接在 /source/medias/banner 文件夹中更换你喜欢的 banner 图片,主题代码中是每天动态切换一张,只需 7 张即可。

如果你会 JavaScript 代码,可以修改成你自己喜欢切换逻辑,如:随机切换等,banner 切换的代码位置在 /layout/_partial/bg-cover-content.ejs 文件的 <script></script> 代码中:

$('.bg-cover').css('background-image', 'url(/medias/banner/' + new Date().getDay() + '.jpg)');

/source/medias/featureimages 文件夹中默认有 24 张特色图片,你可以再增加或者减少,并需要在 _config.yml 做同步修改。

存在问题

新需求

其它知识

hexo基础数据

hexo博客刚初始化完成,最基础数据文件如下:

image-20231017064858084

如何升级/回退hexo版本

已成功测试。(2023年10月18日)

要利用npm升级Hexo版本,可以按照以下步骤进行操作:

  1. 打开命令行终端,并进入你的Hexo博客项目的根目录。

  2. 运行以下命令来检查当前Hexo版本以及可用的Hexo版本:

    hexo version
    npm show hexo version
    

    image-20231018055739774

  3. 确定可用的Hexo版本后,运行以下命令来安装最新版本的Hexo:

    npm install hexo@最新版本号 --save
    
    #本次执行命令:
    npm install hexo@7.0.0-rc2 --save
    

    把"最新版本号"替换为你希望安装的Hexo版本号。

    image-20231018055902701

  4. 等待npm安装完毕,安装过程可能会花费一些时间。

  5. 安装完成后,运行以下命令来验证Hexo是否成功升级:

    hexo version
    

    如果输出显示了你刚刚安装的Hexo版本号,则说明升级成功。

    image-20231018055922495

请注意,升级Hexo版本可能对你的博客项目造成一定影响,建议在升级前备份你的项目文件以防止意外情况发生。

  • 尴尬,升级后博客出现了问题。。。

image-20231018061824874

这里开始回退版本。

  • 如何查看hexo 5.x具体有哪些版本?

要查看 Hexo 5.x 的具体版本号,您可以使用 npm 的 version 命令来获取所有可用的版本列表。请按照以下步骤进行操作:

  1. 打开终端或命令提示符窗口。

  2. 输入以下命令并按回车键运行:

    npm show hexo@5 versions
    
  3. 等待片刻,npm 将显示 Hexo 5.x 的所有可用版本号。

    示例输出:

    [
      '5.0.0',
      '5.0.1',
      '5.1.0',
      '5.2.0',
      ...
    ]
    

以上命令将列出 Hexo 5.x 的所有版本号。您可以基于此列表选择您想要回退到的特定版本。

image-20231018062222545

  • 回退版本

npm如何回退hexo到指定的5.x版本?

要回退到指定的 Hexo 5.x 版本,您可以使用 npm 命令来实现。首先,您需要打开终端或命令提示符窗口,并确保您的计算机上已安装了 Node.js 和 npm。

然后,执行以下命令以安装指定版本的 Hexo:

npm install -g hexo@5.x.x

请将 “5.x.x” 替换为您想要安装的具体版本号,例如 “5.3.0”。

此命令将全局安装指定版本的 Hexo。安装完成后,您就可以使用新安装的 Hexo 版本了。

注意:请确保你了解要回退到的具体版本的功能和兼容性,并且根据您的项目需求进行选择。

本次先回退到5.3.0:

查看当前版本:

image-20231018062342699

回退:

npm install -g hexo@5.3.0

image-20231018062417324

验证:没有效果。。。

image-20231018062641406

  • 但是回退后,没有效果,这是为什么呢?

如果您按照上述步骤成功安装了指定版本的 Hexo,但回退后没有生效,可能是因为在全局安装的 Hexo 版本与项目本地安装的 Hexo 版本冲突了。

在这种情况下,您需要确保在项目目录中使用与全局安装的 Hexo 版本相匹配的本地版本。您可以按照以下步骤执行:

  1. 进入您的 Hexo 项目目录:

    cd /path/to/hexo-project
    
  2. 在项目目录中,使用以下命令安装或更新 Hexo 5.x 版本:

    npm install hexo@5.x.x
    

    这里的 “5.x.x” 应替换为您想要安装的具体版本号。

  3. 确保在项目目录中使用的是正确的 Hexo 版本,而不是全局安装的版本。

请注意,在项目目录中安装 Hexo 后,您可能需要更新或重新配置一些 Hexo 插件或主题,以确保与所选择的 Hexo 版本兼容。

我当时就是在项目下回退的。。。

  • 在全局执行此回退命令:npm install -g hexo@5.3.0

image-20231018062841595

验证:

还是这样,没生效。。。

image-20231018062915523

  • 我打算删除当前最新hexo版本7.0.0-rc2,然后安装hexo老版本5.3.0

如何利用npm卸载hexo软件?

要使用 npm 进行 Hexo 软件的卸载,您可以按照以下步骤进行操作:

  1. 打开终端或命令提示符窗口。

  2. 通过以下命令进入您的 Hexo 项目目录:

    cd /path/to/hexo-project
    

    这里的 “/path/to/hexo-project” 应替换为您实际 Hexo 项目所在的路径。

  3. 在项目目录中,使用以下命令卸载 Hexo:

    npm uninstall hexo
    
  4. 确认卸载操作后,npm 将开始卸载 Hexo 软件及其相关依赖。

  5. 等待卸载过程完成。这可能需要一些时间,具体时间取决于您的计算机性能和 Hexo 软件的大小。

  6. 卸载完成后,您可以关闭终端或命令提示符窗口。

请注意,使用 npm 卸载 Hexo 仅会移除 Hexo 的包及其依赖,这不会删除您的项目文件和数据。如果您想要完全删除 Hexo 项目,请手动删除项目文件夹。另外,如果您在全局范围内安装了 Hexo,请使用 npm uninstall -g hexo 命令来卸载全局安装的 Hexo 软件。

开始卸载:

全局卸载:

image-20231018063402633

项目下卸载:

image-20231018063444893

  • 全局安装hexo5.3.0
npm install -g hexo@5.3.0

image-20231018063610949

全局安装hexo后,进到hexo项目根目录后,查看hexo版本时,此时报错:

image-20231018063746972

按所给命令执行,查看效果:

image-20231018063823935

image-20231018063837458

还是报错,这里在项目根目录下继续手动安装下hexo5.3.0版本:

image-20231018063938424

还是报错。。。大无语了。😥

  • 然而,我在自己原来拷贝的hexo目录里再次运行hexo博客,这次就没事儿了

image-20231018064540729

image-20231018064601882

  • 这里,我删除/d/hexo目录,然后把刚才测试好的目录直接拷贝到/d/hexo下,再次观察效果(注意这里我要把一直在持续编辑的博客源数据也一起拷贝过去)

拷贝后,再次执行hexo命令就正常了:

image-20231018065140666

hexo s:

image-20231018065238909

image-20231018065342340

image-20231018065356224

至此,以上问题已全部解决。

因此一定要注意:hexo版本和自己主题项目之间的兼容性,否则可能会报错!

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码
x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号
《云原生架构师实战》

image-20230107215126971

🍀 个人博客站点

http://onedayxyy.cn/

image-20231016061438175

🍀 语雀

https://www.yuque.com/xyy-onlyone

image-20230912072007284

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

image-20231016062113861

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1107359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python中if __name__ == ‘__main__‘

1. 在Python中&#xff0c;凡是以两个下划线开头&#xff0c;两个下划线结尾的变量叫做“魔法变量”。瓦特&#xff1f;魔法变量&#xff1f;对&#xff0c;你没有听错&#xff0c;就是魔法变量。所谓魔法变量就是Python对象内置天生就有的属性变量&#xff0c;你使用这些变量前…

开关电源测试方案介绍:如何进行电源耐压测试?

耐压测试是检验电源模块、电器设备等承受过压能力的测试方法&#xff0c;同时电源模块耐压测试还可以检测出设备的绝缘性能。在电气设备的使用过程中会出现电压突然上升的情况&#xff0c;有时也会因为天气原因出现高压&#xff0c;如果耐压性能弱&#xff0c;设备绝缘能力差&a…

【Java学习之道】SQL语言的基本语法与操作

引言 对于初学者来说&#xff0c;数据库编程可能听起来有些复杂&#xff0c;但实际上&#xff0c;只要掌握了SQL语言的基本语法和操作&#xff0c;你就能够轻松地处理各种数据问题。本章将为你揭示SQL语言的魅力&#xff0c;帮助你快速入门数据库编程。 一、SQL语言简介 SQL…

Three.js柏林噪音 流动球体

代码&#xff1a;https://gitee.com/honbingitee/three-template-next.js/tree/shader/ 参考油管视频&#xff1a;https://www.youtube.com/watch?voKbCaj1J6EI 核心&#xff1a; 创建循环的图形 应用噪声 顶点按照法相偏移 CustomMaterial(): ShaderMaterial {const material…

轻松上手,制作电子期刊就这么简单

嗨&#xff0c;年轻的朋友们&#xff01;你是否想过用你的创意和热情来制作一本属于自己的电子期刊&#xff1f;现在&#xff0c;这个梦想已经触手可及&#xff01;只需要用到这款工具即可轻松上手&#xff0c;就能拥有自己的电子期刊 工具&#xff1a;FLBOOK在线制作电子杂志平…

工具类app变现难?工具类产品广告变现策略实用指南

工具类app面临着买量成本高&#xff0c;收益提升难 的困境&#xff0c;在不同的变现周期可以采用不同的变现策略。#APP广告变现# 1、合理挖掘变现场景&#xff0c;提升eCPM 工具类 App 可基于自身产品属性和用户使用习惯路径&#xff0c;相应地选择开屏广告、信息流、横幅、…

品牌线上布局思路有哪些,品牌策略分析!

电商运营是现代企业宣推和销售产品的重要方式之一。要让品牌产品在电商节点&#xff0c;实现流量获取&#xff0c;就必须制定详细有效的品牌策略。今天为大家带来品牌线上布局思路有哪些&#xff0c;品牌策略分析&#xff01; 不同于线下销售广告&#xff0c;针对电商平台&…

浅谈压力测试的重要目标及意义

随着互联网应用的快速发展&#xff0c;软件系统的稳定性和性能成为了用户和企业关注的焦点。用户期望应用程序能够在高负载下依然保持稳定和高效。为了满足这一需求&#xff0c;压力测试成为了不可或缺的一环。本文将探讨压力测试的重要性以及如何进行压力测试。 一、压力测试的…

[正式学习java③]——字符串在内存中的存储方式、为什么字符串不可变、字符串的拼接原理,键盘录入的小细节。

一、字符串 1.字符串在内存中的存储方式 &#x1f525;在java中&#xff0c;内存中有两个地方可以存储字符串&#xff0c;一个是字符串池&#xff0c;一个是堆内存&#xff0c;串池中的字符串不会重复&#xff0c;而堆中的字符串每次都会开辟一块新的空间&#xff0c;因为维护…

Python武器库开发-基础篇(三)

基础篇(三) 函数 下面是一个打印问候语的简单函数&#xff0c;名为greet_user() &#xff1a; greeter.py def greet_user():"""显示简单的问候语"""print("Hello!")greet_user()这个示例演示了最简单的函数结构。第一行的代码行使…

优雅而高效的JavaScript——防抖和节流

&#x1f60a;博主&#xff1a;小猫娃来啦 &#x1f60a;文章核心&#xff1a;优雅而高效的JavaScript——防抖和节流 文章核心 引言事件处理的性能问题防抖&#xff1a;延迟触发事件基本原理实现防抖的代码示例实际应用场景举例 节流&#xff1a;限制事件触发频率基本原理实现…

传输层协议(TCP/UDP协议)

全文目录 端口号端口号范围划分 传输层UDP协议特点基于UDP的应用层协议 TCP协议确认应答机制&#xff08;可靠性&#xff09;延迟应答机制超时重传机制流量控制连接管理机制TIME_WAIT 状态CLOSE_WAIT 状态拥塞控制滑动窗口 TCP、UDP对比TCP的listen第二个参数 端口号 在套接字…

【算法设计zxd】第5章分治法

目录 分治算法策略的设计模式 分治思想&#xff1a; 分治算法求解问题的步骤&#xff1a; 设计模式 算法分析 二分查找算法 思考题 计算模型&#xff1a; 时间复杂度分析&#xff1a; 代码&#xff1a; 分治*大数乘法&#xff1a; 【例5-2】设X, Y是两个n位的十进制…

掌动智能分析云性能监控的重要性

云计算已成为现代企业的核心基础设施&#xff0c;它为企业提供了灵活性、可扩展性和成本效益。然而&#xff0c;将业务迁移到云上并不意味着问题就此消失。企业必须仍然保持对其云基础设施和应用程序的严格监控&#xff0c;以确保其性能和可靠性。本文将深入探讨企业云性能监控…

共享模型之管程

1、共享带来的问题 线程出现问题的根本原因是因为线程上下文切换&#xff0c;导致线程里的指令没有执行完就切换执行其它线程了&#xff0c;下面举一个例子 Test13.java static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1 …

学习最优化课程中的一些疑惑

感谢gpt I: 你是一个数学专业教授&#xff0c;请给我讲解一下卡氏积的含义 GPT: 卡氏积&#xff08;Cartesian product&#xff09;是集合论中的一个概念&#xff0c;用来描述两个集合之间的关系。假设有两个集合A和B&#xff0c;卡氏积A B定义为所有有序对 (a, b)&#xf…

【Mysql】InnoDB数据页结构(五)

概述 页是InnoDB存储引擎管理存储空间的基本单位&#xff0c;一个页的大小默认是16KB 。InnoDB 为了不同的目的而设计了许多种不同类型的页 &#xff0c;比如存放记录的索引页&#xff0c;存放表空间头部信息的页&#xff0c;存放 Insert Buffer信息的页&#xff0c;存放 INOD…

23 种设计模式详解(C#案例)

&#x1f680;设计模式简介 设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时…

力扣-消失的数字(两种方法)

题目内容&#xff1a; 方法1&#xff1a; 根据题目我们可以知道这个数组的内容是0~N的数字&#xff0c;而那个消失的数字就是也是这个0~n其中一个&#xff0c;那么我们可以得到0~N所有的数字之和后&#xff0c;再将数组中的数字全部减去&#xff0c;那么我们就得到了那个~消失…

项目播报 | 璞华科技助力苏州巨迈科构建数字化管理体系

项目播报 近日&#xff0c;苏州巨迈科智能科技有限公司&#xff08;以下简称&#xff1a;苏州巨迈科&#xff09;签约璞华科技实施PLM项目&#xff0c;建立苏州巨迈科统一的研发管理平台&#xff0c;实现产品数据在部门间的共享&#xff0c;提升企业技术管理水平和综合竞争力&…