1. 了解hexo
A fast, simple & powerful blog framework
一个快速,简单和强大的博客框架
放上官网
2. 所需要的使用环境
2.1. 软件环境
2.1.1 markdown编辑器
推荐vscode,一个颜值比较赞的编辑器,支持多种语言开发环境,主要是对于markdwon的插件也多,支持git版本管理或者svn版本管理,而且软件启动快,也支持多个终端命令行,记得安装相关以下推荐插件。
Auto-Open Markdown Preview
你打开一个markdown文件,右侧会对当前文件进行预览显示。
Markdown Preview Github Style
你打开一个markdown文件,预览效果与你在Github上的预览效果是一样的,VSCODE上默认的预览高亮不会改变背景颜色,只会改变字体颜色,还有和平常使用atom预览的效果有很多不同,所以你如果要用VSCODE写markdown,建议要安装这个。
markdownlint
管理现有markdown的格式正确性
terminal
支持多中命令的终端命令行
2.1.2 node
放上安装地址,这个安装过程就可以一路next就好,当然你如果有强迫症要改变安装路径,记得修改安装地址,但是一定要记住安装路径,然后将安装路径下的node_global文件夹,或者指令安装的配置到环境变量中(计算机-->右键属性-->高级系统设置-->环境变量),对于node不一定要下载最新的版本,可以下载的LTS稳定版本,截止到20170918,node官网显示的最稳定的版本是v6.11.3 。
举个配置环境变量的栗子,我公司电脑系统盘是D盘,软件安装在系统盘,这边的默认全局安装路径是D:\Program Files\nodejs\node_global,但是我家中的电脑,系统盘是C盘,软件不是安装在系统盘,所以全局安装之后的安装路径是C:\Users\Administrator\AppData\Roaming\npm。
1 | # 在node cmd中进行全局安装,将安装地址更换为国内的淘宝镜像地址 |
一定要保证cnpm -v可以在vscode终端中正常执行,要不然后续通过hexo指令新建blog,会一直显示hexo指令未定义的。
2.1.3 github
- 注册
github账号。 新建一个
{注册呢称}.github.io的仓库。进入新建好的仓库
Settings,找到GitHub Pages,设置Source下的page页所处的branch,这个一般就选择master,然后选择Save。
成功之后该页面会显示
1 | Your site is published at https://{注册呢称}.github.io/ |
- 页面上可以直接选择
Jekyll theme,随便选择一个主题,在浏览器中输入https://{注册呢称}.github.io/,看是否能够正常预览界面。 - 下载github客户端,在安装过程中记得不要一路点击
next,其中有一步是询问git指令是全局安装还是仅能在git shell或者git bash中运行,软件默认是第一个,指令只能在git shell或者git bash中运行,请选择第二个,git指令所有的命令行工具都可以运行。20170913的最新版vscode支持powershell,cmd和bash终端命令行,这个限制可以不用管了。
1 | # 在vscode终端中验证git指令能不能全局执行 |
验证git命令是否能够全局执行,这个很重要,要不然你在非git命令行面板中,是不能执行hexo将blog推送到远程仓库的。
2.2. 相关依赖包
1 | # 在node cmd中进行全局安装, |
全局安装之后,会提示安装路径,如果该路径你之前已经设置成环境变量就不用管,但是如果提示的安装路径你没有设置过环境变量,你就会发现这个全局安装的指令一直跑不了,记得把提示的安装路径设置成环境变量。
2.3. hexo初始化
在文件本地新建测试项目文件,右键在vscode中打开
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16# 在vscode终端中输入以下指令,安装成功的效果
PS x:\xx\xxxx>hexo init #博客初始化
PS x:\xx\xxxx>npm install #安装相关依赖包
# 成功之后查看blog文件夹中的内容是否正常生成
PS x:\xx\xxxx>dir
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2017/9/12 9:05 .vscode #vscode自动生成的,可以忽略
d---- 2017/9/12 9:06 node_modules #安装相关环境
d---- 2017/9/12 9:06 scaffolds #转化不同layout的markdown文章的模板
d---- 2017/9/12 9:06 source #markdown文章所在地
d---- 2017/9/12 9:06 themes #主题
-a--- 2017/9/12 14:32 174 db.json #source解析所得到的
-a--- 2017/9/3 1:36 721 package.json #项目所需模块项目的配置信息
-a--- 2017/9/8 16:30 2460 _config.yml #博客的主要配置
2.4. 必须要配置的文件
2.4.1. 在根目录_config.yml里修改配置
1 | # Site |
2.4.2. 主题文件夹中_config.yml里添加配置
如果没有更换主题的话,就在默认主题landscape中的_config.yml里添加配置,如果已经更换主题,请在对应的主题文件夹中的_config.yml里添加配置。
1 | # SubNav |
2.5. 预览效果
1 | # 现在本地预览效果 |
在浏览器中输入https://github.com/{注册呢称}/{注册呢称}.github.io,查看文件是否上传成功,如果全部上传成功,这个仓库下的文件内容应该和本地的public中的文件一模一样。然后在浏览器中输入https://{注册呢称}.github.io/,看是否能够看到blog相关内容。
3. 可能遇见的问题
3.1 git指令无效
环境变量没有正确配置,请将git路径所在文件夹,配置到环境变量中
3.2 hexo指令无效
环境变量没有正确配置,请将hexo路径所在文件夹,配置到环境变量中
3.3 上传到github上之后页面404
查看上传文件中没有index.html,如果没有请检查一下本地根目录的package.json文件,看一下安装包是否完整,如果不完整的话,请在vscode中执行cnpm i --save ,一定要记得写--save,这样依赖包安装才会保存到package.json,避免以后重复安装。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 "dependencies": {
"hexo": "^3.2.0",
"hexo-deployer-git": "^0.3.1",
"hexo-deployer-openshift": "^0.1.2",
"hexo-deployer-rsync": "^0.1.3",
"hexo-generator-archive": "^0.1.4",
"hexo-generator-category": "^0.1.3",
"hexo-generator-feed": "^1.2.0",
"hexo-generator-index": "^0.2.1",
"hexo-generator-sitemap": "^1.2.0",
"hexo-generator-tag": "^0.2.0",
"hexo-renderer-ejs": "^0.3.0",
"hexo-renderer-marked": "^0.3.0",
"hexo-renderer-stylus": "^0.3.1",
"hexo-server": "^0.2.2"
}
3.4 不知道怎么更换主题
官方主题shop,你可以选择你想要的主题,每个主题的readme.md中都有相关说明,日常摊手.jpg,我肯定是要拿自己改写的主题做例子,我主题的名称是melon,如果大家对这个主题有什么好的建议,可以直接这个仓库下提issues进行相关建议。
安装
1
2
3
4 # 在vscode终端中输入以下指令,这个是在项目根文件夹下执行这个指令
PS x:\xx\xxxx>git clone {主题github地址} themes/{你想设置的主题名称}
#举个栗子
PS x:\xx\xxxx>git clone https://github.com/mowatermelon/hexo-theme-melon.git themes/melon配置
修改hexo根目录下的_config.yml
1
2
3
4#主题一定要和上文对应
theme: {你想设置的主题名称}
#举个栗子
theme: melon
主题更新
1
2
3
4
5
6 #主题一定要和上文对应
cd themes/{你想设置的主题名称}
git pull
#举个栗子
cd themes/melon
git pull
3.5 全局安装了hexo但是命令无效
我最近电脑刚换了系统(2017-11-23),全局安装的hexo是比较新的,全局安装完成之后,我在cmd中执行hexo -v,是正常的,但是在进入blog所在文件夹的时候,hexo s --watch指令不能正常使用,当时以为我打开文件夹的方式不对,最后测试得出,是一个hexo相关环境包hexo-deployer-heroku有问题,主要问题是hexo-deployer-heroku所依赖包中一个叫swig的包已经找不到了,所以这边找hexo-deployer-heroku的就找不到,然后导致hexo看到自己所依赖的包找不到,特别委屈巴巴,他就不想运行了,把package.json中hexo-deployer-heroku删掉就好了。
这次错误主要是我使用指令的时候一般只关注error,不关注warning,其实在将远程仓库clone到本地之后,使用cnpm install的时候,就看到安装了17个环境包,没有关注下面的warning,再次执行cnpm install,warning不会再次出现,所以在第一次warning警告出现的时候,就需要仔细看一下,可能以后就不出现了,那之后就发现不了问题实质了。
4. hexo的相关指令和参数
4.1 Front-matter
Front-matter 是文件最上方以 --- 分隔的区域,用于指定个别文件的变量,举例来说:
1 | title: Hello World |
以下是默认提供的参数,可以将这些参数添加到scaffolds/**.md中。
| 预定参数 | 描述 | 默认值 |
|---|---|---|
| layout | 布局 | |
| title | 标题 | |
| date | 建立日期 | 文件建立日期 |
| updated | 更新日期 | 文件更新日期 |
| comments | 开启文章的评论功能 | true |
| tags | 标签(不适用于分页) | |
| categories | 分类(不适用于分页) | |
| permalink | 覆盖文章网址 |
4.2 默认指令
1 | Usage: hexo <command> |
Commands:
| 可选参数名 | 官方解释 | 个人解读 |
|---|---|---|
| hexo clean | Remove generated files and cache. | 清除所有生成的网页文件夹和数据缓存,主要是清除项目中hexo -g生成的public文件夹中内容,或者通过hexo s --watch生成网站的一些数据缓存 |
| hexo config | Get or set configurations. | 获取当前的hexo所有配置 |
| hexo deploy | Deploy your website. | 将本地的blog推送到对应的git仓库,使用缩写d也可以执行,一般执行hexo d -g |
| hexo generate | Generate static files. | 将本地静态md文件生成对应的静态blog文件,使用缩写g也可以执行,本地预览的时候一般执行hexo g --watch,也会结合deploy,如hexo g -d,一键生成和部署,生成的文件一般在本地项目public文件夹中 |
| hexo help | Get help on a command. | 当对某个指令用法不太清楚的时候,可以用这个指令 |
| hexo init | Create a new Hexo folder. | hexo的初始化,自动下载默认的博客主题和相关依赖包 |
hexo list type |
List the information of the site | 列出当前文件夹的文件列表,type的类型可以为 page, post, route, tag, category,type参数为必填参数 |
hexo migrate type source |
Migrate your site from other system to Hexo. | 从其他blog系统迁移到hexo blog,目前需要通过指令迁移的支持的type参数是joomla、rss和wordpress,详细说明请看4.3.2 |
hexo new layout title |
Create a new post. | 生成规定layout和规定title的md文件,layout可以是post, page, draft or whatever you want,title是生成的md文件名,内容可以是whatever you want,但是请注意使用英文名,也不要出现太多奇怪符号。 |
hexo publish layout filename |
Moves a draft post from _drafts to _posts folder. | 将md文件从draft中发布成post模版格式,在post中的md文件在执行hexo s时在页面才会被看到,layout参数为选填参数,默认是draft,filename参数为必填参数,文件名必须是source/_drafts中已经存在的文件名 |
| hexo render | Render files with renderer plugins. | 强制将文件进行渲染,可参考4.3.1 |
| hexo server | Start the server. | 启动hexo本地服务,在本地查看网页运行效果,并且实时监听页面变化,可以简写成hexo s --watch |
| hexo version | Display version information. | 查看本地hexo版本,还可以写成hexo v或者hexo -v |
Global Options:
| 可选参数名 | 官方解释 | 个人解读 |
|---|---|---|
| –config | Specify config file instead of using _config.yml | 展示_config.yml的配置内容 |
| –cwd | Specify the CWD | 目前不理解 |
| –debug | Display all verbose messages in the terminal | 会把运行过程中的内容记录到debug.log |
| –draft | Display draft posts | 显示文章草稿 |
| –safe | Disable all plugins and scripts | 禁用所有插件和脚本 |
| –silent | Hide output on console | 隐藏在控制台输出 |
4.3 复杂指令的说明
4.3.1 手动渲染文章格式(目前没有发现有什么用)
1 | PS x:\xx\xxxx>hexo render <file1> [file2] ... |
Description:
Render files with renderer plugins (e.g. Markdown) and save them at the specified path.
Options:
| 备选参数名 | 官方解释 | 个人解读 |
|---|---|---|
| –engine | Specify render engine | 自定义渲染引擎 |
| –output | Output destination. Result will be printed in the terminal if the output destination is not set. | 指令执行时的默认在终端打印的提示文本内容 |
| –pretty | Prettify JSON output | 将文件中的json进行格式化输出 |
4.3.2 如何从其他blog系统进行迁移
RSS
首先,安装 hexo-migrator-rss 插件。
1 | PS x:\xx\xxxx>npm install hexo-migrator-rss --save |
插件安装完成后,执行下列命令,从 RSS 迁移所有文章。source 可以是文件路径或网址。
1 | PS x:\xx\xxxx>hexo migrate rss <source> |
Jekyll
把 _posts 文件夹内的所有文件复制到 source/_posts 文件夹,并在 _config.yml 中修改 new_post_name 参数。
1 | new_post_name: :year-:month-:day-:title.md |
Octopress
把 Octopress中source/_posts 文件夹内的所有文件转移到 Hexo 的 source/_posts 文件夹,并修改 _config.yml 中的 new_post_name 参数。
1 | new_post_name: :year-:month-:day-:title.md |
WordPress
首先,安装 hexo-migrator-wordpress 插件。
1 | PS x:\xx\xxxx>npm install hexo-migrator-wordpress --save |
在 WordPress 仪表盘中导出数据(“Tools” → “Export” → “WordPress”)(详情参考WP支持页面)。
插件安装完成后,执行下列命令来迁移所有文章。source 可以是 WordPress 导出的文件路径或网址。
1 | PS x:\xx\xxxx>hexo migrate wordpress <source> |
注意
这个插件并不能完美地实现WordPress->Hexo的数据转换,尤其是在处理WordPress的分类方面存在问题(见Front-matter中的分类与标签)。因此,建议您在迁移完成后,手工审阅所有生成的markdown文件,检查其中是否有错误。对于文章数量较大的WordPress站点,这项工作可能要花很长的时间。
Joomla
首先,安装 hexo-migrator-joomla 插件。
1 | PS x:\xx\xxxx>npm install hexo-migrator-joomla --save |
使用 J2XML 组件导出 Joomla 文章。
插件安装完成后,执行下列命令来迁移所有文章。source 可以是 Joomla 导出的文件路径或网址。
1 | PS x:\xx\xxxx>hexo migrate joomla <source> |
4.3.3 发布文章
1 | Usage: hexo new [layout] <title> |
Description:
Create a new post.
Arguments:
| 必要参数名 | 官方解释 | 个人解读 |
|---|---|---|
| layout | Post layout. Use post, page, draft or whatever you want. | 新建的md模板类型,非必写,默认是draft |
| title | Post title. Wrap it with quotations to escape. | 新建的md文件名称,必写 |
Options:
| 必要参数名 | 官方解释 | 个人解读 |
|---|---|---|
| -p, –path | Post path. Customize the path of the post. | 自定义生成的文章地址 |
| -r, –replace | Replace the current post if existed. | 对于已经存在的文件进行重写的时候,直接替换,要不然会新建不成功 |
| -s, –slug | Post slug. Customize the URL of the post. | 文章缩略名,自定义文章显示的url地址中文章名 |