终于完成hexo+github博客搭建。作为第一篇博客,本来记录了整个搭建过程。
安装依赖 (1)
安装git (1.1)
1 | brew install git |
安装node.js (1.2)
1 | wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh |
退出并重新登录
1 | nvm install stable |
安装hexo (2)
1 | $ npm install -g hexo-cli |
初始化 (3)
1 | hexo init hexo-root |
这里创建了一个空目录hex-root,并进行hexo初始化。后续的操作都在hexo-root目录下执行。
注意:最后一个命令(hexo init .)要求当前目录(hexo-root)是一个空目录。否则,会失败。
成功之后,可以看见当前目录下有这些内容:
1 | ls |
本地测试 (4)
在本地起hexo server
1 | hexo clean |
然后,在浏览器上可以测试初始化是否成功:
http://localhost:4000/
这时候应该能看见初始化自带的一篇博客:hello-world
测试完成后,ctrl+C停止hexo server。
设置 (5)
设置主题为next (5.1)
初始化后,默认自带了一个landscape主题:
1 | ls themes/ |
下载next主题:
1 | git clone https://github.com/theme-next/hexo-theme-next themes/next |
把主题设置为next:
1 | vim _config.yml |
把next主题的scheme设置为Mist(纯属个人喜好)
1 | vim themes/next/_config.yml |
把代码高亮设置为night eighties(纯属个人喜好)
1 | vim themes/next/_config.yml |
重新本地测试,发现已经变为简约的next主题了。
设置new_post_name (5.2)
当我们使用命令:
1 | hexo new {title} |
创建一篇新博客的时候,hexo会为我们生成一个{title}.md文件。为了日后方便看博客的创建时间,我们希望.md文件名中带上当前日期。为此,修改_config.yml:
1 | vim _config.yml |
菜单栏 (5.3)
默认情况下,菜单栏中只有Home和Archives两项。把categories, tags和about都打开,这样,菜单栏就会显示相应的菜单项了。
1 | vim themes/next/_config.yml |
现在执行本地测试,点击主页上方的Categories,Tags和About按钮时,会得到错误:
- Cannot GET /categories/
- Cannot GET /tags/
- Cannot GET /about/
这是因为source/下没有categories, tags和about信息。创建它们:
1 | hexo new page about |
可见,在source/下创建了三个目录:categories, tags和about,并且各创建了一个index.md文件。
重新执行本地测试,发现点击Categories, Tags和About时不再报错了。现在我们尝试在testpage-2018-05-12.md中加入category和tag,看看能不能成功建立categories和tags索引:
1 | vim source/_posts/testpage-2018-05-12.md |
重新执行本地测试,点击Categories和Tags,发现里面都是空的。索引建立失败。解决:
- 在source/categories/index.md中加入type: “categories”
1 | vim source/categories/index.md |
- 在source/tags/index.md中加入type: “tags”
1 | vim source/tags/index.md |
重新执行本地测试,点击Categories和Tags,发现索引建立已经成功。
配置中文 (5.4)
1 | vim themes/next/languages/zh-Hans.yml |
基本信息 (5.5)
1 | vim _config.yml |
头像设置 (5.6)
把头像(例如me.jpg)放到themes/next/source/images/目录下,然后修改next的配置文件:
1 | vim themes/next/_config.yml |
打赏 (5.7)
把微信和支付宝的收款二维码图片例如wechatpay.jpg和alipay.jpg)放到themes/next/source/images/目录下,然后修改next的配置文件:
1 | vim themes/next/_config.yml |
社交链接 (5.8)
1 | vim themes/next/_config.yml |
站内搜索功能 (5.9)
1 | npm install hexo-generator-search --save |
生成摘要 (5.10)
当点击“Home”的时候,会显示博文列表。通过配置,可以同时显示一个摘要。有两种方式生成摘要:
自动生成:
这种方式比较简单粗暴,就是认为你博文的“前N个字”就是摘要,所有博文都一样。例如,前300字自动作为摘要:
1 | vim themes/next/_config.yml |
自定义:
自动生成摘要的方式虽然简单,但不精确。博主可以为每篇博文精确定义摘要,方式是:
1 | vim blog-title-{year}-{month}-{day}.md |
也就是通过将摘要和正文分开。
注意:显然,推荐使用自定义摘要。但是,可以把自动生成摘要打开,这样,若博客有自定义摘要,则使用自定义摘要;若没有,则自动生成。
leancloud访问量统计和评论功能 (5.11)
Leancloud准备 (5.11.1)
- 登录https://leancloud.cn/并注册
- 创建应用: 访问控制台 –> 创建应用 –> 填入新应用名称(自取) –> 创建
- 创建Counter: 选择刚创建的应用,存储 –> 创建Class –> 填入Class名称(必须是”Counter”) –> 创建Class
注意:Comment已经存在,所以我们没有创建Comment;
获取AppID和AppKey (5.11.2)
选择刚创建的应用,设置 –> 应用Key,记下里面的”AppID”和”AppKey”。
配置next主题 (5.11.3)
1 | vim themes/next/_config.yml |
创建github repository (6)
创建git repository: https://github.com/
注意:
- repository名一定要为github的名字。
- 把”Initialize this repository with a README”勾选上。
拷贝public key到github (7)
若还没有生成key pair,请先生成。然后:
1 | cat ~/.ssh/id_rsa.pub |
并拷贝其输出内容。
到github上,点击:右上的头像 -> Settings -> SSH and GPG keys -> New SSH key; 填写Title(名称自取)和Key (粘贴前面拷贝的id_rsa.pub的内容)。
配置deploy (8)
1 | vim _config.yml |
deploy (9)
第一次deploy,需要先安装hexo-deployer-git:
1 | npm install hexo-deployer-git --save |
只第一次deploy之前执行!
下面就是deploy了:
1 | hexo clean |
- 第一条命令:删除本地生成的静态页面;
- 第二条命令:根据source/_posts下面的.md文件,以及主题等,重新生成静态页面;
- 第三条命令:把第二步生成的静态页面上传到github;
现在,博客就生成了:http://{your-name}.github.io/
引用图片资源 (10)
- 当设置post_asset_folder参数为true
1 | vim _config.yml |
当设置post_asset_folder参数为true后,在建立文件时,hexo会自动建立一个与文章同名的文件夹,用于存放与该文章相关的所有资源。
- 安装hexo-asset-image
在hexo根目录下执行:
1 | npm install https://github.com/CodeFalling/hexo-asset-image --save |
- 生成资源文件夹
以后再运行hexo n foo来生成博文时,在source/_posts文件夹下,除了自动生成foo-{year}-{month}-{day}.md文件外,还自动生成一个同名的文件夹foo-{year}-{month}-{day},用于存放与本篇博文相关的资源。原有博客需要插入图片的,可以手动mkdir。
- 引用资源
把图片image.jpg放入资源文件夹foo,然后在博文中通过![标题](foo/image.jpg)
来引用图片。生成的html(public/{year}/{month}/{day}/foo/index.html
)中,对图片的引用是这样的:<img src="/{year}/{month}/{day}/foo/image.jpg" alt="标题"></p>
创建markdown repository (11)
到此为止,博客就搭建起来了。以后写博客,就是创建.md文件。为了保存曾经的博客(.md文件),我另外创建一个github repository。通过这个repository,在公司和家里的不同电脑上,都可以写博客了。最后,在配置了hexo的电脑上发布。
常见错误 (12)
博文.md文件中除了开头部分,若包含”—“,则很容易出一些奇怪的YAMLException,并且报错的位置可能相去甚远,很难定位。例如:
- YAMLException: end of the stream or a document separator is expected at line x, column y
- YAMLException: unidentified alias at line x, column y
- YAMLException: name of an alias node must contain at least one character at line x, column y
小结 (13)
之前使用CSDN,页面不够漂亮,也不能做一些个性化的设置,所以计划搭一个自己的博客,今天终于得以实现。第一次搭建博客,并且对前端网站不熟悉,踩了不少坑,所以本文记下这个过程,作为开篇。