引言
本文承接自 这篇文章 ,在配置完 Git 及完成其自动配置脚本后,接下来就准备对 Hexo 本身动手啦!
正文
配置 Hexo 发布环境
创建新 Repository
打开浏览器并登陆到 GitHub 网站,在个人首页上切换到”Repositories”标签页并点击右侧的”New”按钮进入新建 Repository 界面:
其中”Repository name”可自行填写,因为 Hexo 发布环境中可能会涉及密码或 client_secret 等不宜公开的内容,所以发布模式选择”Private”更为安全。填写完毕后,点击下方的”Create repository”完成创建。
修改并上传 Hexo 文件
拷贝 Hexo 文件
在终端中运行 git clone https://github.com/joe136685182/HexoBlog.git
将新建的 repository 克隆到本地(请将命令中的 GitHub 链接替换为你个人的 repo 地址),然后将本地的 Hexo 文件复制到生成的文件夹中,如下图:
配置 .gitignore 文件
因为我们只需要最基本的 Hexo 文章发布环境,所以可以随时自动安装的 Hexo 程序、相关的Node.js 模块以及自动生成的 public
文件夹都是不需要上传的。按照这个原则,我们可以通过配置 .gitignore
文件来屏蔽这些内容。
在终端中进入刚刚克隆出来的 HexoBlog
文件夹,然后执行以下命令:
1 | cd HexoBlog |
在打开的编辑界面中输入以下内容,并保存退出:
1 | node_modules/ |
上述配置分别屏蔽了 Node.js 模块安装目录、自动生成的文章目录、 macOS 自动生成的 .DS_Store
文件、图片缩略图 Thumbs.db
文件、日志文件、Hexo 发布文章到 GitHub 前自动生成的缓存目录以及 Hexo 生成文章时自动产生的各个临时文件。
除这些文件/文件夹以外,如果有其它屏蔽/添加文件的需要,可以自行访问 这里(英语) 或 这里(中文) 学习 .gitignore
的配置语法。
配置主题文件(可选)
如果你的 Hexo 通过 git clone
的方式配置了第三方主题(比如本站就使用了 NexT主题 )的话,在 themes/
目录下会有相应的文件夹,如果此时直接通过 git add
命令添加主题文件夹,会有如下错误提示:
1 | git add themes |
这是因为 Git 检测到了,要添加的 themes/next
目录是来自另一个 Git 项目,不能直接作为本项目的文件进行上传。遇到这种情况有两种解决方法:
将主题配置为子模块
这也是上文错误提示中建议的一种处理方式。这样做的好处是操作简单,且能保证每次克隆本项目时,作为子模块的主题能跟随作者的更新保持同步;但这会导致每次克隆之后,我们对主题配置文件 _config.yml
及其它文件的修改都会丢失,需要重新配置。
如果选择这种解决方法,只需在 HexoBlog/
目录下执行 git submodule add git-url themes/next
即可,其中 git-url 需要替换为主题的 GitHub 地址。要使用带了子模块的项目有一些 注意事项 需要注意,请务必了解。
清除主题中的 Git 相关信息
这种处理方式可以保留对主题配置文件及其它文件的修改,但如果主题作者对主题进行了更新,则在同步更新主题时会比较麻烦。因为本站使用了 Gitment 以实现文章评论,对主题配置文件进行了修改,而这种处理方式可以保留修改,且在克隆时更简单快捷,所以选择使用这种处理方法。
如果选择这种解决方法,可以通过以下命令清除主题的 Git 信息:
1 | cd themes/next |
这样就完成了 Git 信息的清除,此时再通过 git add
命令添加 themes/
目录就不会再有错误提示了。而当主题作者进行了更新要进行同步的话,就只能删除当前的主题目录,重新克隆最新的主题,然后重新进行配置,这也是这种解决方法的不足之处。
将处理后的 Hexo 目录同步到 GitHub
到这里,对 Hexo 目录的处理就基本完成了,在终端中进入 HexoBlog
目录,执行 git status
命令,可以查看到待同步文件信息。接下来执行 git add *
将所有变更添加到待同步列表中,此时 Git 会根据 上文 配置的 .gitignore
文件,过滤掉相应的文件和文件夹。
此时再次执行 git status
命令,可以看到除了 .gitignore
文件以外,所有变更都已经进入待提交队列了,所以还需要执行 git add .gitignore
命令将 .gitignore
文件也添加进去。一切准备就绪后,执行 git commit -am "first commit of hexo"
进行提交,并执行 git push
推送到 GitHub 上。
编写 Hexo 自动初始化脚本
将 Hexo 克隆到本地并初始化
上文已经将 Hexo 目录同步到 GitHub 了,接下来说一下如何将 Hexo 目录部署到本地并进行初始化。
首先在终端中进入要部署 Hexo 环境的目录下,执行 git clone git-url
将之前处理过并上传的 Hexo 目录拉取到本地(假设没有添加第三方主题,或主题已经 照此 处理),其中 git-url 需要替换为本项目的 GitHub 地址(如 https://github.com/joe136685182/HexoBlog.git ),然后执行以下命令完成初始化:
1 | cd HexoBlog |
如果在上传 Hexo 目录时,使用了 这种方法 处理第三方主题,则需要额外处理子模块的同步问题,具体操作方式请参考 这篇文章 。
在完成初始化之后,就可以直接通过 Hexo new title
命令进行新建文章操作、通过 Hexo clean && Hexo g -d
命令发布文章了。请注意,在每次新建、修改、发布文章后,或者调整了 Hexo 及主题的设置后,都建议执行以下命令,将变更及时同步到 GitHub 上,避免变更丢失:
1 | Hexo clean |
将初始化命令编写为脚本
每次更换环境都要手动完成初始化,其实可以将初始化命令编写成自动化脚本。进入 HexoBlog
目录,执行以下命令:
1 | touch init_hexo.sh |
在打开的编辑界面中输入以下内容,并保存退出:
1 |
|
然后接着执行以下命令,将该脚本同步到 GitHub 上:
1 | git add init_hexo.sh |
到这里,脚本的编写和同步就完成了。
新环境下快速部署 Hexo 目录
假设现在换了一台新电脑(系统为 macOS 或某个 Linux 发行版),结合 这篇文章 中的内容,只要安装好Node.js 环境以及 Git 工具,即可实现 Hexo 目录的快速部署。
首先检查 Node.js 环境及 Git 工具已经安装完毕,然后将 之前 准备好的 SSH Key 部署文件夹拷贝到新电脑上(假设为 ~/GithubKey
目录),在终端中执行以下命令完成 Git 工具的配置:
1 | $ cd ~/GithubKey |
部署完 SSH Key 之后,在终端中执行以下命令,完成 Hexo 环境的部署和初始化:
1 | cd ~ |
其中执行 git clone
命令时要记得将 GitHub 地址替换为自己的项目地址。到这里就完成了 Hexo 文章发布环境的部署和初始化,一共只需要执行6个命令,而且还能实现文章的备份,一举两得。如果你比我还懒的话,后4个命令还可以集成到 GithubKey/init_github.sh
中,真正实现一键部署,这个就留给有缘人你自己去折腾吧~
后记
到这里终于记录完了这个小任务的全过程,真的我保证,上手试一下就能发现这真的是个小任务,不知道为什么写下来会这么长😂
搞 Hexo 还是蛮有意思的,就是部署不太容易,文章也容易丢。考虑到以后经常要用 rMBP 以外的电脑,换电脑是个麻烦事,所以还是查了一些资料,把这个脚本搞了出来。这两天的小折腾也让我学习了蛮多 Git 相关的知识,果然懒和好奇是第一驱动力丫。好了我要去洗菜了,白白~