Hexo 建站

Hexo 安装、配置

  • 安装 Hexo、并建站

    1
    2
    3
    4
    5
    6
    7
     # 安装 Hexo
    npm install -g hexo-cli
    # 初始化 Hexo
    hexo init <folder>
    cd <folder>
    # 安装 Hexo 依赖
    npm install
  • 启动站点:https://hexo.io/zh-cn/docs/server

    1
    2
    3
    4
    # 安装独立的服务器模块(也可以不注册依赖)
    npm install hexo-server --save
    # 启动服务器
    hexo server [-p <port>]
  • 部署站点

    1
    hexo deploy

Hexo 站点结构

  • _config.yml:配置信息
  • package.jsonHexo 模块 npm 配置文件
  • scaffolds:模板文件
    • 新建文章时,尝试根据布局参数寻找相应模板建立文章
  • source:资源
  • public
  • themes:主题文件夹,一个文件夹即一个主题

Hexo 主题结构

  • _config.yml:主题配置文件
    • 修改后会自动更新
  • languages:语言文件夹
  • layout:布局文件夹,存放主题模板文件
    • Hexo 内建 Swig 模板引擎,可另外安装 EJSHamlJadePug 插件支持
    • Hexo 根据模板文件扩展名决定模板引擎
  • scripts:脚本文件夹
    • 启动时,Hexo 会载入其中 JS 文件
  • source:资源文件夹
    • 除模板外的资源,如:CSSJS 均位于此处
    • _ 开头文件、文件夹和隐藏文件被忽略
    • 若文件可被渲染,则会被解析存储到 public 文件夹,否则直接拷贝

Hexo 命令

1
2
3
4
5
6
7
8
9
10
hexo init [folder]
hexo new [layout] <title> # 新建
hexo generate # 生成静态文件
hexo publish [layout] <filename> # 发布草稿
hexo deploy [-g] # 部署
hexo render <file1> [file2] [-o <output>] # 渲染文件
hexo migrate <type> # 从其他博客系统迁移
hexo clean # 清楚缓存、静态文件
hexo list <type> # 列出站点资料
hexo version
  • 更新配置、安装依赖(如:修改渲染引擎)之后,尝试清空缓存使生效
    • $ hexo clean
    • 删除 db.json 文件

Hexo 模块

  • Markdown 渲染
    • hexo-renderer-mark:建议立刻删除,渲染能力极差
    • hexo-renderer-markdonw-it:不好用
    • hexo-renderer-markdonw-it-plus:也不好用
    • hexo-renderer-pandoc:太重,需要 pandoc 支持
    • hexo-renderer-kramed:快用,快用

NPM 总述

npm

  • npm 的三个独立组成部分
    • 网站:查找包、设置参数、管理 npm 使用体验的主要途径
    • 注册表:存储包信息
    • CLI:终端应用

npm 包管理

  • npm 包可以分为是否全局安装
    • 全局安装:适合安装命令行工具包
      • 位于 /user/localNode.js 安装目录
    • 局部安装(缺省):适合安装包依赖,且包通过 Node.jsrequire 加载
      • 位于当前目录 node_modules 目录下
    • 全局安装和局部安装互相独立
      • 若同时需要命令行、包依赖,则应分别安装或使用 npm 链接
    • 为避免污染全局环境,以下方式可以用于局部安装命令行
      • npx 包(命令):查找 noode_modules 中局部安装包
      • alias 设置别名:添加 PATH=<bin-dir>:$PATH <cmd> 别名,即每次为命令执行设置环境变量

输入命令

  • install:安装

    • -g:全局安装
    • --save:维护 package.json 中依赖项
    • --save-dev:维护 package.json 中开发依赖项
  • uninstall:卸载

    • -g:卸载全局安装包
    • --save:维护 package.json 中依赖项
    • --save-dev:维护 package.json 中开发依赖项
  • update:更新

    • -g:更新全局安装包
  • outdated:检查版本

    • -g:检查全局安装包
    • --depth=<num>:检查深度

输出命令

  • whoami
  • publish:发布包

npm 配置

  • config:更新、修改用户或全局 npmrc 文件

npm 配置文件

npm 用户配置文件

.npmrc

1
2
3
4
repository=<repo-URL>
init.author.email=
init.author.name=
init.license=
  • .npmrcnpm 用户配置文件,缺省为 ~/.npmrc
    • 指定 npm 本身配置:包仓库地址、用户信息

.npm-init.js

1
2
3
4
5
6
7
8
// 直接设置键值对
module.exports = {
"<custom-field>": "<field-value>",
"<custom-field>": "<field-value>",
}
// 通过 `prompts` 函数交互式设置键值对
module.exports = prompts("<Question 1>, "<Field>")
)
  • .npm-init.js:用户包初始化配置文件,缺省为 ~/.npm-init.js
    • 设置 package.json 生成内容

环境变量

  • NPM_CONFIG_PREFIX:全局包安装地址

npm 包配置文件

包配置文件

package.json

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
{
"name": "<package-name>",
"version": "<semantic-version>",
"description""",
"main": "index.js",
"scripts": {
"tests": "echo \"Error:\" && exit 1"
},
"repository": {
"type": "git",
"url": "<URL>"
},
"keywords": [ ],
"author": "<author-name>",
"license": "<license-name>",
"bugs": {
"url": "<URL>"
},
"homepage": "<URL>"
// 以上为 `npm init` 默认生成内容
"dependencies": {
"<dep-named>": "<dep-version>",
"<dep-named>": "<dep-version>"
},
"devDependecies": {
"<dev-only-dep-named>": "<dep-version>",
"<dev-only-dep-named>": "<dep-version>"
}
}
  • package.json:局部包管理文件,位于当前包目录

    • 列出包依赖
    • 语义化 管理包版本
    • 方便迁移
  • 创建:npm init [--yes] 初始化包即默认生成 package.json

    • 包含字段可通过 .npm-init.js 设置
    • 字段值大部分为空,除非可从 npm 用户配置文件 init 字段中获取
  • 字段说明

    • name:可用 @<scope>/ 为包设置域名,方便组织相关包
    • version:应遵守语义化版本规则
    • dependencies:包依赖,安装、卸载时 --save 标志会自动维护
    • devDependencies:开发时包依赖,安装、卸载时 --save-dev 标志会自动维护