该实践其实是一个目录操作规范,以易于使用为最终目的,将需要个性化和经常会变动的目录或文件独立出来,借助简单的 Shell 脚本进行 Hexo 的初始化及 NexT 主题的升级。
说明:来源于个人使用过程中的总结,可能并不适合所有人,仅供参考。
<!-- more -->
1. 最终目录结构
.
├── config_hexo.yml # 软链接到 Hexo 配置文件
├── config_next.yml # 软链接到 NexT 主题配置文件
├── core # Hexo 根目录,可自定义
│ ├── _config.yml -> ../config_hexo.yml # 个人修改后的配置文件
│ ├── _config.yml.bak # 原 Hexo 配置文件
│ ├── db.json
│ ├── node_modules
│ ├── package-lock.json
│ ├── package.json
│ ├── public
│ ├── scaffolds
│ ├── source -> ../source_hexo # 个人变动后的资源目录
│ ├── source_bak # 原 Hexo 资源目录的备份
│ └── themes
│ ├── landscape # Hexo 默认主题根目录
│ └── next # NexT 主题根目录
│ ├── LICENSE.md
│ ├── README.md
│ ├── _config.yml -> ../../../config_next.yml # 个人修改后的配置文件
│ ├── _config.yml.bak # 原主题配置文件的备份
│ ├── crowdin.yml
│ ├── docs
│ ├── gulpfile.js
│ ├── languages
│ ├── layout
│ ├── package.json
│ ├── scripts
│ └── source # 主题下的资源目录
├── deploy.sh # 3. 同步远程服务器脚本
├── init.sh # 1. Hexo 初始化脚本
├── source_hexo # 软链接到 Hexo 下的资源目录
├── source_next # 需要添加到 NexT 下资源目录的文件放这里
└── update_next.sh # 2. NexT 主题升级脚本
1.1. 在 Github 上我们需要建立两个仓库
username/username.github.io
对应 Hexo 部署的目标目录,在 Hexo 根目录下的配置文件中进行设置。username/blog.xxx.com
名字随意,对应上面的目录。其中core
目录需要添加到.gitignore
文件。
1.2. 如何使用
⚠️ 说明:每次写文章只需要步骤 3 ~ 5,只有当切换到一个新的工作环境时,才需要执行完整的步骤 1 ~ 5。
-
从 Github 拉下来环境仓库
➜ git clone https://github.com/username/blog.xxx.com.git
-
初始化 Hexo 环境
# ⚠️ 前提:你已经安装好了 NodeJS 环境 和 hexo-cli # 如果需要,可以自行修改 shell 文件 ➜ chmod u+x init.sh ➜ ./init.sh
-
进入 Hexo 根目录
# core 的名字可以在脚本 init.sh 中修改 ➜ cd core # 创建一篇文章 ➜ hexo new post "一篇新文章"
-
Hexo 发布部署
➜ hexo clean && hexo g -d
-
将本次修改推送到仓库
# 先退回到 core 目录到上一级,即仓库根目录 ➜ git add . ➜ git commit -m "新增文章" ➜ git push
2. 脚本文件
init.sh
当切换到一个新的工作环境时,使用该脚本初始化 Hexo 及基于原数据的工作环境,之后便可以继续写文章、发布了。
示例文件内容如下:
# 初始化 Hexo
# 注意,这里并没有检查 NodeJS 环境 和 hexo-cli
# 如果需要,可自行扩展
hexo init core
# 安装依赖,修改配置
cd core
npm install
npm install hexo-deployer-git --save
npm install hexo-generator-searchdb --save
npm install hexo-abbrlink --save
npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save
npm install hexo-filter-nofollow --save
mv _config.yml _config.yml.bak
ln -s ../config_hexo.yml _config.yml
mv source source_bak
ln -s ../source_hexo source
# 安装、配置主题
git clone https://github.com/theme-next/hexo-theme-next themes/next
cd themes/next
mv _config.yml _config.yml.bak
ln -s ../../../config_next.yml _config.yml
\cp -rp ../../../source_next/* source
update_next.sh
当需要升级 NexT 主题时使用,示例文件内容如下:
# 还原本地修改
cd core/themes/next
git checkout . && git clean -xdf
# 更新源码
git pull
# 恢复修改
mv _config.yml _config.yml.bak
ln -s ../../../config_next.yml _config.yml
\cp -rp ../../../source_next/* source
deploy.sh
该脚本非必须,只有需要将最终部署好的文件分发到不同服务器时才用得到。
同步方式推荐使用 rsync
命令,这里不再具体举例。关于该工具到使用,可以参阅:rsync 的基本使用入门
原文链接:https://blog.sqiang.net/post/1938539149.html