真的是手把手教你如何Hexo一个你自己的github网站

结合本人的个人经验,自己也摸索很久了,网上的资源很多,翻阅了很多资料,但是感觉不全。原谅作者是一个菜鸟。但是呢, 你摸索久了,自然而然也会总结出经验。好了废话不多,先看看作者的个人网站。DaiSuke。现在结合自己操作流程,你们也来操作一下吧。


工具:Mac


安装brew(可以去官网看看Homebrew

终端输入命令:

1
ruby -e"$(curl -fsSL --insecurehttps://raw.githubusercontent.com/Homebrew/install/master/install)"

看到红色框框就是安装成功了

1
注意:中间执行的时候会有提示,**回车**和**输入电脑密码**

安装git

终端输入命令:

1
brew install git

正在安装

安装成功

1
注意:红色框框的是git安装的路径

进入git安装的路径可以看到有两个文件


安装Node.js

终端输入命令:

1
brew install node

正在安装

安装成功

1
注意:红色框框的是node安装的路径

查看是否安装成功,显示是v5.11.0版本

终端输入命令:

1
node –v

版本号


创建SSH key

在终端输入:

1
ssh-keygen -t rsa -b 4096 -C "**github的邮箱(即你的github账号)**"

当然,如果你没有github账号,请移步github注册,注册账号大家都会吧。

在执行的时候,需要以下操作:

回车-输入github账号密码—再次输入(不是电脑锁屏密码)

生成密钥


添加密钥到你的github中

进入你的github主页, 点击头像–设置

点击头像--设置

选择SSH and GPG keys –> New SSH key

接下来就是把刚才的生成的密钥复制到这里了。

有两种方法:

  • 1、在终端输入:
1
pbcopy < ~/.ssh/id_rsa.pub

使用命令把id_rsa.pub文件的内容copy下来
然后粘贴到下面的key中,title随便写

  • 2:从目录进去找到id_rsa.pub文件

一般都在这里:/Users/用户名/.ssh/。这个路径,可以在你生成密钥的时候在终端看到。

记得把隐藏开了

打开id_rsa.pub,把里面的东西复制下来

全部复制下来

添加SSH keys

title随便写

完成时是这样的


安装Hexo

不想全局安装的话,就新建一个文件夹。比如我在桌面建一个GithubBlog文件夹,这里专门存放我的博客以及网站样式等

比如:

存放你的专属文件

在终端进入这个文件夹

然后在终端输入:

1
sudo npm install –g hexo

正在安装…期间会提示你输入密码

安装成功

在终端输入:

1
hexo init

当然你也可以输入:

1
hexo init <安装的目录>

初始化成功

一切差不多准备好了。

在终端输入:

1
hexo generate

目的:生成静态页面

生成静态页面

在终端输入:

1
hexo server

本地服务器启动成功

打开浏览器,输入你的本地网站的地址:http://localhost:4000

在浏览器上访问以下

ok,你的网站成功了。

到这里你是不是很激动啊?反正当时我操作到这里就很happy。

没错,这只是本地的一个网站而已,想让更多人看到,那就把它部署到github那里吧。


在github创建仓库

(这个就是把你的本地文件上传到开源的github中)

首先,进入github主页

新建仓库

填写资料

框中的就是仓库的地址


部署到github中

进入安装hexo的目录,打开_config.yml文件

打开文件

打开_config.yml文件后找到,然后修改

deploy:

git类型

type:git

仓库地址:

repository: git@github.com:DaisukeZJY/daisukezjy.github.comm.git

分支:主分支

branch:master

保存文件


克隆主题

我找的是nexT这个,其他你可以google以下hexo主题,很多主题

1、在_config.yml找到这里,theme:填写你的主题,保存文件

2、在终端输入你要克隆主题的地址

1
git clone https://github.com/klugjo/hexo-theme-next.git  themes/next

克隆完成之后开始部署了


最终操作

记住:每次修改_config.yml或其他,都要更新,重新部署

两个步骤:

1
hexo g//更新
1
hexo d//部署

部署成功


访问

打开浏览器输入:

1
https://daisukezjy.github.io

问题

部署的时候出现错误:

1
ERRORDeployer not found:github

解决方法,在终端输入:

1
npm installhexo-deployer-git –save

然后在_config.yml把github改为git


题外话

现在我用的nexT,里面集成很多插件和样式,具体使用修改,参考官方文档nexT

如何让文章置顶

原来用的WordPress,直接很方便地管理置顶文章,Hexo只提供了按发布日期的排序,只好网上找了些资料修改。

原理:在Hexo生成首页HTML时,将top值高的文章排在前面,达到置顶功能。

修改Hexo文件夹下的node_modules/hexo-generator-index/lib/generator.js,在生成文章之前进行文章top值排序。

需添加的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
posts.data = posts.data.sort(function(a, b) {
if(a.top && b.top) { // 两篇文章top都有定义
if(a.top == b.top) return b.date - a.date; // 若top值一样则按照文章日期降序排
else return b.top - a.top; // 否则按照top值降序排
}
else if(a.top && !b.top) { // 以下是只有一篇文章top有定义,那么将有top的排在前面(这里用异或操作居然不行233)
return -1;
}
else if(!a.top && b.top) {
return 1;
}
else return b.date - a.date; // 都没定义按照文章日期降序排
});

其中涉及Javascript的比较函数:

1
2
3
cmp(var a, var b) {
return a - b; // 升序,降序的话就 b - a
}

修改完成后,只需要在front-matter中设置需要置顶文章的top值,将会根据top值大小来选择置顶顺序top值越大越靠前。需要注意的是,这个文件不是主题的一部分,也不是Git管理的,备份的时候比较容易忽略。
类似:

1
2
3
4
5
6
title: Swift-微博
date: 2018-04-27 14:24:34
tags: Swift
categories: Swift
keywords: 微博, Swift
top: 4(值越大越靠前)

以下是最终的generator.js内容

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
'use strict';
var pagination = require('hexo-pagination');
module.exports = function(locals){
var config = this.config;
var posts = locals.posts;
posts.data = posts.data.sort(function(a, b) {
if(a.top && b.top) {
if(a.top == b.top) return b.date - a.date;
else return b.top - a.top;
}
else if(a.top && !b.top) {
return -1;
}
else if(!a.top && b.top) {
return 1;
}
else return b.date - a.date;
});
var paginationDir = config.pagination_dir || 'page';
return pagination('', posts, {
perPage: config.index_generator.per_page,
layout: ['index', 'archive'],
format: paginationDir + '/%d/',
data: {
__index: true
}
});
};

把以上代码复制张贴即可

参考文章:Hexo博客添加文章置顶功能

置顶样式

虽然文章置顶了,但是没任何提示表示文章置顶了。
打开:/blog/themes/next/layout/_macro 目录下的post.swig文件,定位到<div class="post-meta">标签下,插入如下代码:

1
2
3
4
5
{% if post.top %}
<i class="fa fa-thumb-tack"></i>
<font color=7D26CD>置顶</font>
<span class="post-meta-divider">|</span>
{% endif %}

参考文章:hexo博客优化之文章置顶+置顶标签