官方中文文档
本文章参考为官方文档
如果在尝试安装 Hexo 的过程中出现 EACCES 权限错误,请遵循 由 npmjs 发布的指导 修复该问题。强烈建议 不要 使用 root、sudo 等方法覆盖权限
npmjs指导
npm install -g npm # 这个是安装最新版
如果在编译时可能会遇到问题,请先到 App Store 安装 Xcode,Xcode 完成后,启动并进入 Preferences -> Download -> Command Line Tools -> Install 安装命令行工具。
使用npm安装hexo
npm install -g hexo-cli
适合熟悉hexo的用户
npm install hexo
echo ‘PATH=“$PATH:./node_modules/.bin”’ >> ~/.profile
hexo init <folder>
cd <folder>
npm install
新建完成后,指定文件夹的目录结构如下
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes
如果网站存放在子目录中,例如 http://example.com/blog,则要把 url 设为 http://example.com/blog 并把 root 设为 /blog/。
比如,一个页面的永久链接是 http://example.com/foo/bar/index.html
pretty_urls:
trailing_index: false
此时页面的永久链接会变为 http://example.com/foo/bar/
skip_render: "mypage/**/*"
# 将会直接将 `source/mypage/index.html` 和 `source/mypage/code.js` 不做改动地输出到 'public' 目录
# 你也可以用这种方法来跳过对指定文章文件的渲染
skip_render: "_posts/test-post.md"
# 这将会忽略对 'test-post.md' 的渲染
默认情况下,Hexo 生成的超链接都是绝对地址。例如,如果您的网站域名为 example.com,您有一篇文章名为 hello,那么绝对链接可能像这样:http://example.com/hello.html,它是绝对于域名的。相对链接像这样:/hello.html,也就是说,无论用什么域名访问该站点,都没有关系,这在进行反向代理时可能用到。通常情况下,建议使用绝对地址。
通常配置
应用程序的信息。EJS, Stylus 和 Markdown renderer 已默认安装,您可以自由移除。
package.json
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"hexo": {
"version": ""
},
"dependencies": {
"hexo": "^3.8.0",
"hexo-generator-archive": "^0.1.5",
"hexo-generator-category": "^0.1.3",
"hexo-generator-index": "^0.2.1",
"hexo-generator-tag": "^0.2.0",
"hexo-renderer-ejs": "^0.3.1",
"hexo-renderer-stylus": "^0.3.3",
"hexo-renderer-marked": "^0.3.2",
"hexo-server": "^0.3.3"
}
}
模版 文件夹。当您新建文章时,Hexo 会根据 scaffold 来建立文件。
Hexo的模板是指在新建的文章文件中默认填充的内容。例如,如果您修改scaffold/post.md中的Front-matter内容,那么每次新建一篇文章时都会包含这个修改。
资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。
主题 文件夹。Hexo 会根据主题来生成静态页面。
hexo init
如果没有设置folder,默认在当前文件夹下建立网站
hexo new [layout]
新建一篇文章,若title中包含空格,则需要引号引起来
-p, --path 自定义新文章的路径
-r, --replace 如果存在同名文章,将其替换
-s, --slug 文章的 Slug,作为新文章的文件名和发布后的 URL
hexo generate
,也可以简写成hexo g
生成静态文件
-d, --deploy 文件生成后立即部署网站
-w, --watch 监视文件变动
-b, --bail 生成过程中如果发生任何未处理的异常则抛出异常
-f, --force 强制重新生成文件
Hexo 引入了差分机制,如果 public 目录存在,那么 hexo g 只会重新生成改动的文件。
使用该参数的效果接近 hexo clean && hexo generate
-c, --concurrency 最大同时生成文件的数量,默认无限制
hexo publish [Layout]
发表草稿
hexo server
,也可以简写成hexo s
启动服务器
默认访问网址为:http://localhost:4000/
-p, --port 重设端口
-s, --static 只使用静态文件
-l, --log 启动日记记录,使用覆盖记录格式
hexo deploy
,也可以简写成hexo d
部署网站
-g, --generate 部署之前预先生成静态文件
hexo render
渲染文件
-o, --output 设置输出路径
hexo migrate
从其他博客系统迁移
hexo clean
清除缓存文件db,json和以生成的静态文件public
某些情况下(尤其是更换主题后),如果对站点的更改不生效,可能需要使用该指令
hexo list
列出网站资料
hexo version
显示hexo版本
hexo --safe
安全模式下,不会载入插件和脚本,在安装新插件出现问题时可以尝试使用
hexo --debug
终端显示调试信息并记录到debug.log
hexo --silent
隐藏终端信息
hexo server --config custom.yml
hexo --draft
显示在source/——drafts目录下的草稿文件
hexo --cwd /path/to/cwd
修改当前工作目录
hexo new [layout]
默认为post,可以在_config.yml文件的default_layout修改默认布局
post source/_posts
page source
draft source/_drafts
文件保存在source/draft目录下,通过publish命令将草稿移动到source/_posts目录
hexo publish [layout]
草稿默认不会显示在页面中,执行时加上–draft参数,或者设置render_draft参数为true来预览草稿
front-matter是文件最上方---
分割的区域,用于指定个别文件的变量
如:
---
title: Hello World
date: 2013/7/13 20:46:25
---
文章支持分类和标签,分类具有顺序性和层次性,标签没有顺序和层次
categories:
- Diary
tags:
- PS3
- Games
hexo不支持多个同级分,多个分类尝试list方法:
categories:
- [Diary, PlayStation]
- [Diary, Games]
- [Life]
结构为:
├── Diary
| ├── PlayStation
| └── Games
└── Life
资源(Asset)表示source文件夹下除文章外的所有文件,比如图片、JS、CSS等,如果文章中图片少,可以将图片放在source/images文件夹下,使用![description](/path)
方式引用即可
如果想要组织化地管理文件,在config.yml文件将post_asset_folder选项设置为true即可
资源文件夹管理功能打开后,每次hexo new [layout]
创建文章都会自动创建新文件夹,路径名与文章名相同,与文章有关的资源都会放在此关联文件夹中
config.yml中设置
_config.yml
post_asset_folder: true
marked:
prependRoot: true
postAsset: true
有时可能需要在主题中使用某些资料,而这些资料并不在文章内,并且是需要重复使用的,那么可以考虑使用 Hexo 3.0 新增的「数据文件」功能。此功能会载入 source/_data 内的 YAML 或 JSON 文件,如此一来您便能在网站中复用这些文件了。
举例来说,在 source/_data 文件夹中新建 menu.yml 文件:
Home: /
Gallery: /gallery/
Archives: /archives/
您就能在模板中使用这些资料:
<% for (var link in site.data.menu) { %>
<a href="<%= site.data.menu[link] %>"> <%= link %> </a>
<% } %>
渲染结果如下 :
<a href="/"> Home </a>
<a href="/gallery/"> Gallery </a>
<a href="/archives/"> Archives </a>
Hexo 3.0 把服务器独立成了个别模块,您必须先安装 hexo-server 才能使用。
npm install hexo-server --save
安装完成后,输入以下命令以启动服务器,您的网站会在 http://localhost:4000 下启动。在服务器启动期间,Hexo 会监视文件变动并自动更新,您无须重启服务器。
hexo server
如果您想要更改端口,或是在执行时遇到了 EADDRINUSE 错误,可以在执行时使用 -p 选项指定其他端口,如下:
hexo server -p 5000
在静态模式下,服务器只处理 public 文件夹内的文件,而不会处理文件变动,在执行时,您应该先自行执行 hexo generate,此模式通常用于生产环境(production mode)下。
hexo server -s
服务器默认运行在 0.0.0.0,您可以覆盖默认的 IP 设置,如下:
hexo server -i 192.168.1.1
指定这个参数后,您就只能通过该IP才能访问站点。例如,对于一台使用无线网络的笔记本电脑,除了指向本机的127.0.0.1外,通常还有一个192.168.*.*的局域网IP,如果像上面那样使用-i参数,就不能用127.0.0.1来访问站点了。对于有公网IP的主机,如果您指定一个局域网IP作为-i参数的值,那么就无法通过公网来访问站点。
hexo generate
生成静态文件
生成文件并部署
hexo generate --deploy
hexo deploy --generate
两个命令效果相同,可简写成
hexo g -d
hexo d -g
npm install hexo-deployer-git --save
deploy:
type: git
repo: <repository url> #https://bitbucket.org/JohnSmith/johnsmith.bitbucket.io
branch: [branch]
message: [message]
执行 hexo clean && hexo deploy
在库设置(Repository Settings)中将默认分支设置为_config.yml配置中的分支名称。稍等片刻,站点就会显示在您的Github Pages中。
Heroku、Netlify、Rsync、OpenShift、FTPSync、SFTP、Vercel、Bip、RSS3等
详见官方文档