# 安装依赖
````
```bash
npm install
```
````
# 服务器
## [hexo-server](https://github.com/hexojs/hexo-server)
Hexo 3.0 把服务器独立成了个别模块,您必须先安装 [hexo-server](https://github.com/hexojs/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
```
### 自定义 IP
服务器默认运行在 `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`参数的值,那么就无法通过公网来访问站点。
# 指令
## init
```
$ hexo init [folder]
```
新建一个网站。如果没有设置 `folder` ,Hexo 默认在目前的文件夹建立网站。
本命令相当于执行了以下几步:
1. Git clone [hexo-starter](https://github.com/hexojs/hexo-starter) 和 [hexo-theme-landscape](https://github.com/hexojs/hexo-theme-landscape) 主题到当前目录或指定目录。
2. 使用 [Yarn 1](https://classic.yarnpkg.com/lang/en/)、[pnpm](https://pnpm.io/zh/) 或 [npm](https://docs.npmjs.com/cli/install) 包管理器下载依赖(如有已安装多个,则列在前面的优先)。npm 默认随 [Node.js](https://hexo.io/zh-cn/docs/index.html#安装-Node-js) 安装。
## new
```
$ hexo new [layout]
```
新建一篇文章。如果没有设置 `layout` 的话,默认使用 [_config.yml](https://hexo.io/zh-cn/docs/configuration) 中的 `default_layout` 参数代替。如果标题包含空格的话,请使用引号括起来。
```
$ hexo new "post title with whitespace"
```
| 参数 | 描述 |
| :---------------- | :-------------------------------------------- |
| `-p`, `--path` | 自定义新文章的路径 |
| `-r`, `--replace` | 如果存在同名文章,将其替换 |
| `-s`, `--slug` | 文章的 Slug,作为新文章的文件名和发布后的 URL |
默认情况下,Hexo 会使用文章的标题来决定文章文件的路径。对于独立页面来说,Hexo 会创建一个以标题为名字的目录,并在目录中放置一个 `index.md` 文件。你可以使用 `--path` 参数来覆盖上述行为、自行决定文件的目录:
```
hexo new page --path about/me "About me"
```
以上命令会创建一个 `source/about/me.md` 文件,同时 Front Matter 中的 title 为 `"About me"`
注意!title 是必须指定的!如果你这么做并不能达到你的目的:
```
hexo new page --path about/me
```
此时 Hexo 会创建 `source/_posts/about/me.md`,同时 `me.md` 的 Front Matter 中的 title 为 `"page"`。这是因为在上述命令中,hexo-cli 将 `page` 视为指定文章的标题、并采用默认的 `layout`。
## generate
```
$ hexo generate
```
生成静态文件。
| 选项 | 描述 |
| :-------------------- | :----------------------------------------------------------- |
| `-d`, `--deploy` | 文件生成后立即部署网站 |
| `-w`, `--watch` | 监视文件变动 |
| `-b`, `--bail` | 生成过程中如果发生任何未处理的异常则抛出异常 |
| `-f`, `--force` | 强制重新生成文件 Hexo 引入了差分机制,如果 `public` 目录存在,那么 `hexo g` 只会重新生成改动的文件。 使用该参数的效果接近 `hexo clean && hexo generate` |
| `-c`, `--concurrency` | 最大同时生成文件的数量,默认无限制 |
该命令可以简写为
```
$ hexo g
```
## publish
```
$ hexo publish [layout]
```
发表草稿。
## server
```
$ hexo server
```
启动服务器。默认情况下,访问网址为: `http://localhost:4000/`。
| 选项 | 描述 |
| :--------------- | :----------------------------- |
| `-p`, `--port` | 重设端口 |
| `-s`, `--static` | 只使用静态文件 |
| `-l`, `--log` | 启动日记记录,使用覆盖记录格式 |
## deploy
```
$ hexo deploy
```
部署网站。
| 参数 | 描述 |
| :----------------- | :----------------------- |
| `-g`, `--generate` | 部署之前预先生成静态文件 |
该命令可以简写为:
```
$ hexo d
```
## render
```
$ hexo render [file2] ...
```
渲染文件。
| 参数 | 描述 |
| :--------------- | :----------- |
| `-o`, `--output` | 设置输出路径 |
## migrate
```
$ hexo migrate
```
从其他博客系统 [迁移内容](https://hexo.io/zh-cn/docs/migration)。
## clean
```
$ hexo clean
```
清除缓存文件 (`db.json`) 和已生成的静态文件 (`public`)。
在某些情况(尤其是更换主题后),如果发现您对站点的更改无论如何也不生效,您可能需要运行该命令。
## list
```
$ hexo list
```
列出网站数据。
## version
```
$ hexo version
```
显示 Hexo 版本。
## config
```
$ hexo config [key] [value]
```
列出网站的配置(`_config.yml`)。如果指定了 `key`,则只展示配置中对应 `key` 的值;如果同时指定了 `key` 和 `value`,则将配置中对应的 `key` 的值修改为 `value`。
## 选项
### 安全模式
```
$ hexo --safe
```
在安全模式下,不会加载插件和脚本。当您在安装新插件遭遇问题时,可以尝试以安全模式重新执行。
### 调试模式
```
$ hexo --debug
```
在终端中显示调试信息并记录到 `debug.log`。当您碰到问题时,可以尝试用调试模式重新执行一次,并 [提交调试信息到 GitHub](https://github.com/hexojs/hexo/issues/new?assignees=&labels=&projects=&template=bug_report.yml)。
### 简洁模式
```
$ hexo --silent
```
隐藏终端信息。
### 自定义配置文件的路径
```
# 使用 custom.yml 代替默认的 _config.yml
$ hexo server --config custom.yml
# 使用 custom.yml 和 custom2.json,其中 custom2.json 优先级更高
$ hexo generate --config custom.yml,custom2.json,custom3.yml
```
自定义配置文件的路径,指定这个参数后将不再使用默认的 `_config.yml`。
你可以使用一个 YAML 或 JSON 文件的路径,也可以使用逗号分隔(无空格)的多个 YAML 或 JSON 文件的路径。例如:
```
# 使用 custom.yml 代替默认的 _config.yml
$ hexo server --config custom.yml
# 使用 custom.yml, custom2.json 和 custom3.yml,其中 custom3.yml 优先级最高,其次是 custom2.json
$ hexo generate --config custom.yml,custom2.json,custom3.yml
```
当你指定了多个配置文件以后,Hexo 会按顺序将这部分配置文件合并成一个 `_multiconfig.yml`。如果遇到重复的配置,排在后面的文件的配置会覆盖排在前面的文件的配置。这个原则适用于任意数量、任意深度的 YAML 和 JSON 文件。
### 显示草稿
```
$ hexo --draft
```
显示 `source/_drafts` 文件夹中的草稿文章。
### 自定义 CWD
```
$ hexo --cwd /path/to/cwd
```
自定义当前工作目录(Current working directory)的路径。