Hugo个人动态部署
Hugo个人动态部署
小码同学一直都想要一个好看并简洁的个人动态,之前部署了一个Artitalk,发现界面不好看,虽然可以评论交互,但界面真的不好看,知道看到hugo这个主题,哇,惊艳到我了,真的好好看,Hugo和Hexo类似,都差不多是全静态博客,都是需要本地构建,既然是这样,那也是可以放在GitHub Actions自动构建,这样还是挺方便的。
安装
安装Go
Hugo
使用的Go语言编译,速度飞快,所以我们还要先安装Go语言。
Go语言下载地址:https://golang.google.cn/dl/
我这里是AMD处理器,你根据自己的情况下载合适的版本,下载完直接安装就好,安装过程可以自己选择安装路径,它会自动配置环境。安装软件应该养成一个好习惯,安装软件自己应该知道每一个软件的安装位置。
安装完后打开命令行,查看go是否安装成功,如果已经安装了成功,但是没有显示以下内容,则自己主动去环境变量,在系统变量中的Path
变量,在Path
变量中添加Go/bin
的安装路径即可,重新打开终端输入以下内容就好了。
1 | go version |
安装Hugo
Hugo仓库地址:https://github.com/gohugoio/hugo
我这里建议下载hugo_extended_0.85.0_windows-bit64
版本,我在此之前使用的最新版,发现总是有奇怪的bug,询问了作者,作者建议使用该版本,该版本没有问题,可以正常使用。
下载完该压缩包后,将该压缩包的hugo.exe
文件粘贴到Go/bin
目录下即可。
拉取主题
主题仓库地址:https://github.com/FarseaSH/hugo-theme-moments
在本地电脑Hexo
博客目录旁边打开bash
,打开命令行,执行以下三条命令:
1 | hugo new site Hugo # 新建一个Hugo站点 |
配置个人信息
下载好主题后,进入Hugo/moments
目录,该目录下有个config.toml文件,打开它,按照以下模板配置自己的信息。
1 | # 你所部署发布的网站地址。如果你的主页url是在域名子路径下(如http://blog.hikki.site/link/moments),请务必设定此项。 |
baseURL
: 你所部署发布的网站地址。如果你的主页url是在域名子路径下(如 http://site.com/subpath/),请务必设定此项。paginate
: 单一页面上,显示的Moment的数量title
: 页面顶端的标题signature
: 页面顶端的签名cover
: 页面顶端的封面图name
: Moment默认发布人avatar
: Moment默认发布人的头像
创建第一条个人动态
打开命令行,输入以下内容:
1 | hugo new moments/第一条动态.md |
运行完该命令后,在/Hugo/moments/content/moments
文件夹下有一个第一条动态.md
文件,该文件写入以下内容:
1 | --- |
效果如下:
启动本地服务器
在Hugo/moments
文件夹下进入命令行,使用以下命令启动本地服务器,功能类似hexo sever
一样的。
1 | hugo server |
使用
案例一:纯文字
1 | --- |
案例二:单图
1 | --- |
案例三:图片集
1 | --- |
案例四:网络链接
1 | --- |
样式小改
这个主题其实本来就很简单,很好看了,只是我想更改合适我个人的。
修改时间摆放位置
修改前
修改后
修改
打开hugo主题文件夹/themes/moments/layouts/partials/
文件夹,我们需要修改row.html
文件,
- 将
6~12行
注释掉,即注释掉class="pure-u-1 pure-u-sm-1-3"
该类。 - 将
115~118行
注释掉,即注释掉class="moment-note"
该类 - 将以下内容替换成第二步的内容
1 | <div class="moment-note"> |
- 打开打开
hugo主题文件夹/themes/moments/assets/
文件夹,编辑style-refractored.scss
文件,将278行
的text-indent: 20px;
改为text-indent: 0px;
修改页码
修改前
修改后
修改
进入hugo主题文件夹/themes/moments/layouts/
文件夹
-
打开
index.html
文件,将15行和18行
的Prev
修改为上一页
,将32行和35行
的Next
修改为下一页
-
还在当前目录下,打开
_default/list.html
文件,将15行和19行
的Prev
修改为上一页
,将34行和38行
的Next
修改为下一页
-
编辑
hugo主题文件夹/themes/moments/assets/style-refractored.scss
文件,在89行
,添加一个颜色变量
1 | $greey: #3aaaa1; |
- 在
102行
的&.active
下替换background-color
的值为刚刚添加的变量$greey
,再添加一个圆角属性。
改前:
1 | &.active{ |
改后:
1 | &.active{ |
修改页脚
修改前
修改后
修改
- 进入
hugo主题文件夹/themes/moments/layouts/
文件夹,将以下内容替换footer.html
文件内容。
1 | <div class="footer"> |
- 编辑
hugo主题文件夹/themes/moments/assets/style-refractored.scss
文件,将309行
的text-decoration
的值改为none
,修改如下:
1 | a{ |
修改moments主题文章存放处
为什么?
Q:我们为什么要改文章的存放位置?
A:Qexo默认hugo新建的文章时在content/post
位置,但moments新建文章的位置默认是在content/moments
,这对于在Qexo新建动态就有点点不方便了。
分析问题
新建动态文件
我们使用moments主题时,我们新建的文章使用的命令是hugo new moments/文件名.md
,我们需要在/content/post
存放我们的文章,那我们在新建文章时应该修改一下命令,我们应该使用:
1 | hugo new post/文件名.md |
主页html文件
那还有一个问题,我们打开moments的网站时,我们猜测这个网站应该是有多个动态文件拼接成一个html的问题,我们先在终端生成一些hugo的html文件,在终端输入hugo
生成一下html文件,html文件在[hugo根目录]/public
文件夹下,我们打开该文件夹,找到index.html
文件,打开看看。
index.html文件映射
我们打开[hugo根目录]/public/index.html
文件发现是我们的动态主页,同时,我们再打开[hugo根目录]/public/moments/index.html
文件,你会发现,这个文件和刚刚那个文件是一模一样的,说明Hugo在编译html文件时,自动将public/moments
目录下的index.html
文件复制到上一层的public
文件夹下了。
新增post
打开终端,我们新建一个在文章在content/post
文件夹下,使用以下命令:
1 | hugo new post/01测试文件.md |
使用该命令会在[hugo根目录]/content/post
目录下生成一个01测试文件.md
文件,打开该文件,随便在里面写点啥。
然后重新编译一下文章,使用以下命令:
1 | hugo |
你会发现,在[hugo根目录]/public
有一个post
文件夹,打开post
文件夹下的index.html
,里面的内容就是你刚刚在01测试文件.md
写的内容。
总结
文章生成的位置是可以改变的,只是moments主题默认将content/moments
文件夹的.md
文件作为文章的默认存储位置而已。
我们可以试着改变一下文章的存储位置,将moments
的文章默认存储位置改为post
,并且显示到页面也是显示post文件夹
的内容,而不是显示,moments文件夹
的内容。下面来带你改变一下默认存储位置。
解决问题
打开[hugo根目录]/themes/moments/layouts
文件夹,用编辑器打开index.html
文件,将moments改为post就好了。
然后重新编译一下文件,打开[hugo根目录]/public/index.html
文件,你会发现,打开的内容就是[hugo根目录]/content/post
文件夹下的.md
文件内容了。
给Hugo添加在线写动态功能
我们使用的是Qexo这个项目,完全免费,我们部署在Vercel上面,数据库使用MongoDB的免费数据库。
具体实现方式,可以参考这本站这篇文章给Hexo添加在线后台管理
给Hexo添加后台博客管理系统和给Hugo是一样的步骤,完全一样,Qexo也支持Hugo,在部署成功后,在配置博客时,将使用配置的Hexo修改为hugo就可以了,其他都按照视频的步骤走就行。
小问题
引入站内外链404
我们的资源文件一般是放在static文件夹里面,但我引入的时候没有成功,显示404,我们需要修改一下引入外链的路径,在首部去掉/
就可以了,不要根路径就可以了,
如果加根路径实际上执行的是该路径http://localhost:1313/外链地址.css
如果不加根路径,实际的是http://localhost:1313/link/moments/外链地址.css
,其中,/link/moments
是baseURL
路径下的路径,在部署时,localhost:1313
路径会自动替换为我的博客路径,也就是https://blog.hikki.site
。
你可以F12查看请求的路径,根据自己的问题修改。