小站是用github page加上hexo建立的,那么,就将hexo的安装使用作为本站的第一篇文章吧。

官方中文文档 | Hexo

Hexo安装

Hexo前置安装需要Node.js和Git,下面附上链接:

Node.js (nodejs.org)

Git (git-scm.com)

查看node.js和npm是否安装:

1
2
node --version
npm --version

前置环境安装完成后,我们使用npm一键安装:

1
npm install -g hexo-cli

建站

在你喜欢的目录建立存放网站资源的文件夹并在文件夹下执行如下命令,路径填入下面的<path>

1
2
3
hexo init <path>	## 如果不填路径则默认当前路径
cd <path>
npm install

新建完成后,指定文件夹的目录如下:

1
2
3
4
5
6
7
8
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes

_config.yml

在这里可以配置网站信息

package.json

应用程序的信息。

scaffolds

模版 文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件。

Hexo的模板是指在新建的文章文件中默认填充的内容。例如,如果您修改scaffold/post.md中的Front-matter内容,那么每次新建一篇文章时都会包含这个修改。

source

资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。

themes

主题 文件夹。Hexo 会根据主题来生成静态页面。

写作

新建一篇文章:

1
hexo new [layout]<title>

layout表示布局,默认可以在_config.yml里更改。title不可以省略,如果标题有空格,需要用双引号括起来。

该命令也可以带参数:

-p, –path 自定义文章新路径

-r, –replace 如果有同名文章则替换

-s, –slug 作为新文章的文件名和发布后的URL

默认情况下,Hexo 会使用文章的标题来决定文章文件的路径。对于独立页面来说,Hexo 会创建一个以标题为名字的目录,并在目录中放置一个 index.md 文件。

新建文章之后就可以打开markdown文件愉快写作啦!

写作完成后,运行如下命令:

1
2
3
4
hexo clean	# 清除缓存文件和原来的静态文件
hexo generate # 构建文件
hexo server # 启动服务器,就是本地预览,默认端口在4000
hexo deploy # 部署网站,也就是同步到github上去

由于每次新建文章都需要这些命令,我将其小小的封装了一下,用一个C++程序来控制,好让自己专注于写博客本身这件事上,现附下代码:

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
35
36
37
38
39
40
41
// blog.cpp
#include <iostream>
#include <string>
#include <cstring>
#include <windows.h>
#include <shellapi.h>
using namespace std;
string path = "d:\\zbc\\Documents\\MyFiles\\Blog\\";
int main(int argc, char const *argv[]){
SetCurrentDirectory(path.c_str());

string cmd;
if(argc == 1){
system( ("start " + path + "source\\_posts\\hello-world.md").c_str() );
}else if(argc == 2){
if( !strcmp(argv[1], "up") ){
system("hexo deploy");
}else if( !strcmp(argv[1], "go") ){
cout << "*>>hexo clean" << endl
<< "*>>hexo generate" << endl
<< "*>>hexo server" << endl;
system("hexo clean");
system("hexo generate");
system("hexo server");
}
}else if(argc == 3){
cmd = "hexo new post --path ";
cmd += argv[1];
cmd += "/\"";
cmd += argv[2];
cmd += "\" \"";
cmd += argv[2];
cmd += "\"";
cout << "*>>" << cmd << endl;
system( cmd.c_str() );
string temp = argv[1];
system( ("start " + path + "source\\_posts\\" + argv[1] + "\\" + argv[2] + ".md" ).c_str() );
}

return 0;
}