结合本人的个人经验,自己也摸索很久了,网上的资源很多,翻阅了很多资料,但是感觉不全。原谅作者是一个菜鸟。但是呢, 你摸索久了,自然而然也会总结出经验。好了废话不多,先看看作者的个人网站。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安装的路径 |
安装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
完成时是这样的
安装Hexo
不想全局安装的话,就新建一个文件夹。比如我在桌面建一个GithubBlog文件夹,这里专门存放我的博客以及网站样式等
比如:
在终端进入这个文件夹
然后在终端输入:
1 | sudo npm install –g hexo |
正在安装…期间会提示你输入密码
在终端输入:
1 | hexo init |
当然你也可以输入:
1 | hexo init <安装的目录> |
一切差不多准备好了。
在终端输入:
1 | hexo generate |
目的:生成静态页面
在终端输入:
1 | hexo server |
打开浏览器,输入你的本地网站的地址:http://localhost:4000
在浏览器上访问以下
到这里你是不是很激动啊?反正当时我操作到这里就很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
13posts.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
3cmp(var a, var b) {
return a - b; // 升序,降序的话就 b - a
}
修改完成后,只需要在front-matter
中设置需要置顶文章的top
值,将会根据top
值大小来选择置顶顺序top
值越大越靠前。需要注意的是,这个文件不是主题的一部分,也不是Git管理的,备份的时候比较容易忽略。
类似:1
2
3
4
5
6title: 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 | {% if post.top %} |
参考文章:hexo博客优化之文章置顶+置顶标签