引言
本人大概是从大四毕业后到研究生入学前的这段时间开始玩 Hexo + Github + Next主题
的博客搭建的。觉得感兴趣了就入坑个四五天,之后连续半年时间不会再看这个破烂博客。但最近由于心血来潮而重拾Hexo博客之后,发现很多东西和原本的不大一样了。Hexo已经更新到了 5.0+ 的版本,Next主题也有了 7.80 之类的最新版。原本自信满满,以为可以一同操作猛如虎的本菜鸡直接遭遇了滑铁卢,当时心情如下:
环境部署工作 安装node.js
总的来说,Hexo博客利用的是node.js
的环境来进行搭建的,目前不同Hexo版本对应的node.js
版本的表格如下:
Hexo 版本
最低兼容 Node.js 版本
5.0+
10.13.0
4.1-4.2
8.10
4.0
8.6
2.2-3.9
6.9
3.2-3.3
0.12
剩下的低版本我就不一一列举出来了。就个人而言,不同于科研工作的pytorch、tensorflow的工具包需要稳定版本,Hexo博客的版本还是越新越好,不然上传博客容易出现各种报错的问题。
下面是node.js官网的链接,直接下载安装即可。
1 https://nodejs.org/zh-cn/
检查node.js版本
打开你电脑的 cmd
或是 powershell
分别敲下这两行神秘代码并回车,进行 node.js
和 npm
版本的检查。其实主要是检查又没有正常的安装上。
安装Git
1 https://git-scm.com/downloads
当然,如果你已经有了的话,请在 Git Bash
里用以下代码检查一下你的git版本
,以防版本过低被提示is deprecated
。看不懂这个英文的请自行百度/谷歌以增长词汇量。不要和我一样学英语学得头秃了还是只记得abandon
。
1 git update-git-for-windows
如果你不幸输入了 git update
,虽然它还是会帮你更新,但它会提示你的指令已经弃用了(提示:这里藏着deprecated的意思,做英语阅读分析的技巧,阅读上下文猜测词义,尽管我高中考英语时从来没有试成功过)。提示如下:
1 2 3 4 5 $ git update Warning! `git update` has been deprecated; Please use `git update-git-for-windows` instead. Git for Windows 2.32.0.windows.2 (64-bit) Up to date
Github账号注册与仓库搭建
中国著名的思想家、文学家、教育家鲁迅先生曾经说过这么一句话:cs大佬们都有Github账号,我也有Github账号,所以四舍五入一下,我也是码农界的一方霸主(还是码农)。所以,还是趁早建一个Github账号以备不时之需。
做自己的博客网站需要域名和存储服务器,这些要从哪里来?从Github中(嫖)来。注册很简单,你只需要有个自己的邮箱,然后发挥自己的想象给自己搞个酷炫的用户名,比如nmsl,或许 kksk 会更好,总之这将会成为你的Github ID
,请谨慎对待。千万不要出现什么过于儒雅随和的名字,不然的话……
紧接着就是建立存储自己静态网页文件的新仓库的时候了,请按图行事(Hexo博客仓库名字的形式是 xxxx.github.io,前缀务必与你的 Github ID
一致 ):
1 your_github_id.github.io
建立好仓库后,请务必保存 <>code
里的 SSH
以及你的仓库(repo)的url地址
,这些以后都会用到。这两者的形式大概如下(上下分别为SSH以及HTTPS的deploy方式):
1 2 3 4 SSH: git@github.com:your_github_id/your_github_id.github.io.git repo: https://github.com/your_github_id/your_github_id.github.io.git
接下来点击右侧设置Settings
。向下找到Gihub Pages
,点击 Launch automatic page generator
,Github将会自动替你创建出一个pages的页面。 如果配置没有问题,大约几分钟之后,your_github_id.github.io
这个网址就可以正常访问了。顺带,推荐强制开启https
,可以更好地保护你的博客网站。
Hexo安装
找一个没有小电影的合适位置,比如 E:/hexo/ ,安装 hexo-cli
,鼠标右键在指定目录下怼开Git Bash
进行输入(懒得找新建文件夹目录的建议cd
):
1 2 cd /e/hexo/npm install hexo-cli -g
1 2 3 hexo init blog cd /e/hexo/blog/npm install
Github推送
配置个人信息(依旧是在Git Bash
里操作),注意 name
和 email
两者要与 github id
和 注册邮箱
一致:
1 2 git config --global user.name "XXXX" git config --global user.email "XXXXXXXXX@XXX.XXX"
1 ssh-keygen -t rsa -C "XXXXXXXXX@XXX.XXX"
生成密钥的时候可以一路回车,但是请记得两件事一个是你自己设定的SSH密钥的密码,另一个则是密钥的位置,通常就在这里:
1 C:\Users\你的计算机用户名\.ssh\id_rsa.pub
到了这一步提供两个方法来复制你的SSH密钥全部内容,一个是装逼版的,请在bash控制台输入:
另一个则是直接打开 id_rsa.pub
文件进行复制,之后贴到你的github网址中个人设置的 SSH and GPG keys
这一栏新建的SSH密钥框里,title
随便取,叫 I can suck my own dick
来展现你惊人的柔韧性也无所谓。
配置 SSH key
的原因:很多人在用github管理项目的时候,都是直接使用 https url
克隆到本地,当然也有有些人使用 SSH url
克隆到本地。使用 SSH url
克隆却需要在克隆之前先配置和添加好 SSH key
。如果你以后用 SSH url来克隆就需要用到,所以提前配置好没有任何问题。第一次上传的时候可能就会需要登陆你的Github账号,并输入你的SSH传输的password。
blog根目录下的_config.yml配置
修改hexo根目录下的文件_config.yml中的deploy,添加之前保存的ssh或者仓库名:
1 2 3 4 5 6 7 8 9 10 11 12 deploy: type : git repository: github: git@github.com:your_github_id/your_github_id.github.io.git branch: master 或者 deploy: type : git repo: https://github.com/your_github_id/your_github_id.github.io.git branch: master
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 title: 随便写 subtitle: '' description: '' keywords: author: your_github_id language: zh-CN timezone: '' url: https://your_github_id.github.io/ root: / permalink: :year/:month/:day/:title/ permalink_defaults: pretty_urls: trailing_index: true trailing_html: true
Hexo博客编写基础 下载Next最新主题框架 1 2 3 4 https://theme-next.iissnan.com/getting-started.html cd your-hexo-sitegit clone https://github.com/iissnan/hexo-theme-next themes/next
或者更简单粗暴些,直接从github网站上下载最新版,解压到themes
文件夹中并用next
重命名解压出来文件夹。这里是网址:Next主题v7.8.0 。
在blog根目录下的_config.yml
里设置主题
初始化博客
生成新博客网页 1 $ hexo new page "The name of your new page"
通常跟着主题默认的设置走,有about
,archives
,categories
,tags
等。在生成完毕后,根目录下的source
文件夹里会生成相应的文件夹,里面还会自动生成index.md
文件。
撰写新博客文章(Markdown + HTML)
1 $ hexo new post "The name of your new post"
1 2 3 4 5 6 7 --- title: 儒雅随和nmsl date: 2021-08-10 11:11:11 categories: 随便写 tags: [tag1,tag2,tag3] description: 摘要,随便写点。 ---
1 2 3 4 5 *斜体* **粗体** ***又粗又斜*** ~~删除线~~ `阴影`
1 2 3 | title1 | title2 | title3 | | ------ | ------ | ------ | | 123456 | 123456 | 123456 |
title1
title2
title3
123456
123456
123456
你的文章名.md 文件内常用指令,用来加载想要展示的图片和音乐,是我通过 html 自己琢磨出来的。记得在 blog 的 source 文件夹下新建一个 resources 文件夹来存放要加载的图片和音乐。
1 2 3 4 5 6 7 8 9 10 11 12 13 <!--这玩意儿供你插入图片,歌名和与文章相应的循环播放的歌曲用的。--> <!--在搞这个之前记得把hexo的config文件中的post_asset_folder的布尔值改为true 。--> <!--这样以后,source /_post/路径下会在你新建post的时候生成一个供你存放音源图源的文件夹。--> <div align="middle" > <img src="/resources/xxxx唱片图片.jpg" width="50%" height="50%" title="xxxx歌名" alt="" /> <audio src="/resources/xxxx.mp3" style="max-height :100%; max-width: 100%; display: block; margin-left: auto; margin-right: auto;" controls="controls" autoplay="autoplay" loop="loop" preload="meta" > </audio> </div> <!--简单的空行指令--> <br>
1 ![](你图片的url,通常是/resources/xxx.jpg)
语言设定(单独强调)
blog_config.yml下language设定:
网页分页内容目录 1 2 3 4 5 6 7 8 9 source_dir: source public_dir: public tag_dir: tags archive_dir: archives category_dir: categories code_dir: downloads/code i18n_dir: :lang skip_render:
Next主题
主体修改/themes/next/
下的_config.yml
主题配置文件即可。少量需要修改.styl
和.js
文件。Next 7.80版本里css
文件基本看不到,css
文件夹下的基本都是.styl
文件,让你改css
文件的都要去面壁(我没说他一定是抄的)。
Next主题基本设定 主题风格选取
主题风格首推Gemini
,永远的神,最好看的Next主题,具体原因下面会细说(不是胡说)。
1 2 3 4 5 6 7 8 9 10 11 12 scheme: Gemini darkmode: true
博客菜单优化。menu下面第一列是你设定的menu栏目名称,第二列是对应的文件夹或者文件名,第三列则是icon的名称:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 menu: 首页: / || home 关于: /about/ || user 标签: /tags/ || tags 分类: /categories/ || th 归档: /archives/ || archive 站点地图: /sitemap.xml || sitemap menu_settings: icons: true badges: false
自定义主页
主页通常为博客文章的摘要页,摘要页的设定分别为blog根目录下的hexo博客的_config.yml
文件以及主题hexo文件夹下的主题设定的_config.yml文件
两者的设定。
1 2 3 4 5 6 7 8 9 10 11 excerpt_description: true auto_excerpt: enable : true length: 150
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 index_generator: path: /default-index/ per_page: 10 order_by: -date menu: 首页: / || fa fa-home 关于: /about/ || user 标签: /tags/ || tags 分类: /categories/ || th 归档: /archives/ || archive 站点地图: /sitemap.xml || sitemap menu_settings: icons: true badges: false
之后,在blog/source/的目录下建立一个 index.md 文件。
1 2 3 4 5 6 --- title: Charles的ACG博客 date: 2021-08-11 14:21:16 description: 立志成为一个会玩一点代码的肥宅PhD菜鸡博主 type : "home" ---
返回顶部(Back to top)设定
在Next 7.80 主题的主题设定文件_config.yml
里找到 Back2top
,修改一下设定即可。
1 2 3 4 5 6 back2top: enable : true sidebar: false scrollpercent: true
Next主题优化
就我个人而言,next主题还算是很好用的。不只是样式简约又不失漂亮,与其配套的插件包也是层出不穷。接下来我就先介绍一下Next主题的动态背景。
动态背景Three/Canvas Ribbon
我选取过 three
中的 three_waves
进行过尝试。废话不多说,先上个图感受一下。
和我的设计有点冲突,但如果单纯放在无背景的白底上还是蛮漂亮的。里面的猫则是live 2D
,我以后会进一步介绍。这个动态背景的设定很简单,因为 Next 7.80 主题的主题设定文件_config.yml
里已经有与之对应的框架了,只要再从 github 上下载一下它的包就可以直接使用。那么,就先从下载开始。首先在Blog根目录下打开 Git Bash,随后键入:
然后就是正常安装(安装目录为source/lib/):
1 git clone https://github.com/theme-next/theme-next-three source /lib/three
之后在 Next 主题的_config.yml
里找到如下文本并对照修改:
1 2 3 4 5 6 7 three: enable : true three_waves: true canvas_lines: false canvas_sphere: false
或者你要优化一下访客的访问速度,在 Next 主题的_config.yml
用上 CDN图床。CDN你直接理解为降低内容负载,增加访问速度的东西即可:
1 2 3 4 5 6 vendors: ... three: //cdn.jsdelivr.net/gh/theme-next/theme-next-three@1/three.min.js three_waves: //cdn.jsdelivr.net/gh/theme-next/theme-next-three@latest/three-waves.min.js canvas_lines: //cdn.jsdelivr.net/gh/theme-next/theme-next-three@latest/canvas_lines.min.js canvas_sphere: //cdn.jsdelivr.net/gh/theme-next/theme-next-three@latest/canvas_sphere.min.js
Canvas Ribbon的启用也比较类似(竟然是静态的,F@ck),我就不多做介绍了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 一样分三步走。 第一步(在Git Bash里): cd themes/nextls 第二步(在Git Bash里): git clone https://github.com/theme-next/theme-next-canvas-ribbon source /lib/canvas-ribbon 第三步(在 Next 主题的_config.yml里): canvas_ribbon: enable : true size: 300 alpha: 0.6 zIndex: -1
代码块高亮、复制、变色
1 https://zhuanlan.zhihu.com/p/124888459
先是五个 .js
文件,再是改 matery.css
和 post.ejs
。唬得我一愣一愣的,关键是这俩文件在 Blog 的目录中也不存在,所以我纠结了半天,在 Next 主题的配置文件里发现了这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 if (hexo-config('codeblock.copy_button.style' ) == 'mac' ) { .highlight-wrap { background: border-radius: 5px; box-shadow: 0 10px 30px 0 rgba(0, 0, 0, .4); padding-top: 30px; &::before { background: border-radius: 50%; box-shadow: 20px 0 content: ' ' ; height: 12px; left: 12px; margin-top: -20px; position: absolute; width: 12px; } } }
好家伙,原来这玩意儿一开始就有。那么在 Next 7.80 主题的主题设定文件_config.yml
里一定存在着与之对应的控制开关,我一搜,果不其然:
1 2 3 4 5 6 7 8 9 10 11 12 codeblock: highlight_theme: night eighties copy_button: enable : true show_result: true style: mac
所以,小丑竟是我自己,除了不能够进行代码块收缩以外,其余都差不离,凑活着用好了。
博客板块半透明 + 背景设计
每个男人都有一个梦想,那就是拥有一个 可以看穿一切的透 ,哦不,是可以显示背景中二次元老婆们的半透明博客板块。
关于博客板块半透明 + 背景设计,我们主要改动两处地方,Next 7.80 主题的主题设定文件_config.yml以及一个自己在 (/blog/source/_data/)自建的 styles.styl 文件 ,目录没有就自己新建文件夹。一开始我也觉得有点奇怪,为啥不是放在/next/source/里的,后来想想确实可以改目录,但是还是默认的好,不用产生多余的隐藏bug。
先来搞一下 styles.styl
文件。根据之前叙述的目录建立该文件,之后在其中添加如下语句(图你自己从P站下:https://www.pixiv.net/ ):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 // 这是改背景的 body { background :url(/resources/background.jpg); background-repeat: no-repeat; background-attachment:fixed; background-size:cover; background-position: 50% 50%; } // 这是设定透明度的 // 文章内容的透明度设置 .content-wrap { opacity: 0.9; } // 侧边栏的透明度设置 .sidebar { opacity: 0.9; } // 菜单栏的透明度设置 .header-inner { background: rgba(255,255,255,0.9); } // 搜索框(local-search)的透明度设置 .popup { opacity: 0.9; } // 评论区的透明度设置 .comments { background: rgba(255,255,255,0.9) none repeat scroll !important; }
然后再去 Next 7.80 主题的主题设定文件_config.yml
里找到相应的 custom_file_path
,去掉 #
。
1 2 3 4 5 6 7 8 9 10 11 12 13 custom_file_path: style: source /_data/styles.styl
之后,你通过 hexo clean/g/d
三步走以后发现更新的博客文章太透明了,所以要给文章模块加一个阴影。这时候有两种选择,一个是直接在 \blog\themes\next\source\css_common\components\post\post.styl 这个目录下的 post.styl 文件里进行修改,另一个是直接加在 styles.styl 文件里 (我是直接改post.styl的)。
因为是 Next 7.80 版本,如果有人大言不惭地让你去改什么不存在的 themes/next/source/css/_custom/custom.styl
文件,你大可以告诉他不要随便抄别人以前的博客,这样是要负责任的。
如果直接改 post.styl
,那就找到 .use motion
,之后用如下代码进行替换,替换位置在 .use motion
和 @import
之间:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 .use-motion { if (hexo-config('motion.transition.post_block' )) { .post-block { opacity: 0; margin-top: 60px; margin-bottom: 60px; padding: 25px; background:rgba(255,255,255,0.9) none repeat scroll !important; -webkit-box-shadow: 0 0 5px rgba(202, 203, 203, .5); -moz-box-shadow: 0 0 5px rgba(202, 203, 204, .5); } .pagination, .comments{ opacity: 0; } } if (hexo-config('motion.transition.post_body' )) { .post-body { opacity: 0; } } if (hexo-config('motion.transition.coll_header' )) { .collection-header { opacity: 0; } } }
如果继续把代码加在 styles.styl
文件里,则是添加如下代码(此效果不知,我没试过):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 .main-inner { // margin-top: 60px; // padding: 60px 60px 60px 60px; opacity: 0.9; .post-block { background: rgba(255,255,255,0.7) none repeat scroll !important; } } // 主页文章添加阴影效果 .post { margin-top: 60px; padding: 20px; margin-bottom: 60px; -webkit-box-shadow: 0 0 5px rgba(120, 128, 114, 1.5); -moz-box-shadow: 0 0 5px rgba(202, 203, 204, .5); }
博客文章边框圆角效果
1 2 $border -radius-inner = 20px 20px 20px 20px;$border -radius = 20px;
然后再于 Next 7.80 主题的主题设定文件_config.yml
里找到相应的 custom_file_path
,去掉 #
。
1 2 3 4 5 6 7 8 9 10 11 12 13 custom_file_path: variable: source /_data/variables.styl style: source /_data/styles.styl
然后你会发现侧边栏有一处竟然存在背景色,也就是圆角下还有方角,那有点强迫症的我自然要回到 styles.styl
重新改一下 .sidebar
的设置:
1 2 3 4 .sidebar { opacity: 0.9; background-color: transparent; // 加了一句background设定 }
Live 2D(你也要做Vtuber么?)
先来一波直男式科普:Live2D的工作原理是通过将一系列的2D图像进行平移、旋转和变形等操作,生成一个具有自然动画效果的可动人物模型。由于Live2D只需一系列2D原图即可生成具有类似于3D动画效果的模型,比3D建模耗费的时间和成本更少,因此受到很多游戏制作者,特别是小成本AVG和手游作者的喜爱。另外,Live2D生成的模型相对于真正的3D模型,可以更好地还原手绘风格。
Live2D生成的模型并不是真正的3D模型,因此具有一些局限性,比如无法进行大幅度的转身动作。(妈的阿库娅)
1 npm install --save hexo-helper-live2d
1 npm uninstall hexo-helper-live2d
安装完成之后,就会在博客的根目录 package.json 文件中存在依赖,大概长这样(json文件是不支持注释的,而且这个自动就给加上了,不需要改,就不要直接把我这段错误的注释给贴上去了):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 "dependencies" : { "gitalk" : "^1.7.2" , "hexo" : "^5.0.0" , "hexo-deployer-git" : "^3.0.0" , "hexo-generator-archive" : "^1.0.0" , "hexo-generator-category" : "^1.0.0" , "hexo-generator-index" : "^2.0.0" , "hexo-generator-search" : "^2.4.3" , "hexo-generator-sitemap" : "^2.1.0" , "hexo-generator-tag" : "^1.0.0" , "hexo-helper-live2d" : "^3.1.1" , -> 这个就是你装的 live2d 包 "hexo-renderer-ejs" : "^1.0.0" , "hexo-renderer-marked" : "^4.0.0" , "hexo-renderer-stylus" : "^2.0.0" , "hexo-server" : "^2.0.0" , "hexo-theme-landscape" : "^0.0.3" , "live2d-widget-model-tororo" : "^1.0.5" -> 这个是你装的 live2d 资源 }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Install seperated models use npm install {packagename} The package name is the folder name in packages/ We have: live2d-widget-model-chitose live2d-widget-model-epsilon2_1 live2d-widget-model-gf live2d-widget-model-haru/01 (use npm install --save live2d-widget-model-haru) live2d-widget-model-haru/02 (use npm install --save live2d-widget-model-haru) live2d-widget-model-haruto live2d-widget-model-hibiki live2d-widget-model-hijiki live2d-widget-model-izumi live2d-widget-model-koharu live2d-widget-model-miku live2d-widget-model-ni-j live2d-widget-model-nico live2d-widget-model-nietzsche live2d-widget-model-nipsilon live2d-widget-model-nito live2d-widget-model-shizuku live2d-widget-model-tororo live2d-widget-model-tsumiki live2d-widget-model-unitychan live2d-widget-model-wanko live2d-widget-model-z16 }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 live2d: model: scale: 1 hHeadPos: 0.5 vHeadPos: 0.618 use: live2d-widget-model-tororo display: superSample: 2 width: 150 height: 250 position: right hOffset: 20 vOffset: 50 mobile: show: true scale: 0.5 react: opacityDefault: 0.4 opacityOnHover: 0.2
最后请记得用 hexo clean/g/d
三件套将更新好的博客部署到网页上。
如果要自己制作和发布Live 2D的话,请参考如下步骤:
制作比较难,请参考某乎 ,GAMECORES 和B站教程 。不出意外基本都是送进收藏夹吃灰的节奏。
单纯的发布就很简单:
新建一个目录, 用Node环境执行 npm init
, 包名推荐格式如:live2d-widget-model-xxx
。
在刚刚创建的目录下创建 assets
子目录, 把你的模型文件放进去。
执行 npm publish
命令来发布。
此时就使用 npm install --save live2d-widget-model-xxx
来安装自定义的模型包了。
安装完成后就可以在配置文件 _config.yml
中 model:use:
修改包名来使用了。
1 2 3 4 5 6 live2d: model: scale: 1 hHeadPos: 0.5 vHeadPos: 0.618 use: live2d-widget-model-tororo
关于 Next 7.80 版本的部分问题的处理方法 关于主页不完全显示文章的方法 1 2 3 4 5 6 7 8 在index.md里加上 description: 例子: --- title: Hexo常用博客更新代码 date: 2020-05-21 23:12:46 description: 随缘更新的Hexo博客的一些基本构建操作。 ---
关于Next主题7.80版本中文标题的链接无法跳转的问题
1 2 3 4 5 6 7 8 将 \blog\themes\next\source \js\utils.js 文件目录下的 var target = document.getElementById(event.currentTarget.getAttribute('href' ).replace('#' , '' )); 改为: var target = document.getElementById(decodeURI(event.currentTarget.getAttribute('href' ).replace('#' , '' ))); return 的部分如法炮制,问题主要出现在文字转码问题,要给加上 decodeURI()。参考网站为:https://github.com/theme-next/hexo-theme-next/issues/1543