Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。

环境初始化

Windows环境为例

  1. 安装git

  2. 安装nodejs(通过nvm安装)

    • 安装nvm

      下载nvm-noinstall.zip并解压,设路径为path/nvm/,以管理员身份运行其中的install.cmd,编辑生成的path/nvm/settings.txt文件:

      1
      2
      3
      4
      5
      6
      root: path/nvm
      path: path/nodejs #不存在该目录,但不用管
      arch: 64
      proxy: none
      node_mirror: http://npm.taobao.org/mirrors/node/
      npm_mirror: https://npm.taobao.org/mirrors/npm/

      此时系统环境变量会新增两项:NVM_HOMENVM_SYMLINK,修改NVM_HOME值为path/nvmNVM_SYMLINK值为path/nodejs,并添加到PATH变量中:%NVM_HOME%;%NVM_SYMLINK%;

      打开cmd命令窗口,输入nvm v查看配置是否正确

    • 在命令窗口中输入nvm install latest安装最新的nodejs版本(包括局部npm),随后通过nvm use 版本号选择要使用的版本(可以通过nvm ls查看当前安装的所有nodejs版本)

    • 安装全局npm(可选)

      首先执行npm config set prefix "/path/nvm/npm"配置npm的全局安装路径,会生成一个.npmrc文件(默认在C盘用户文件夹下),其中的内容就是path/nvm/npm,然后执行npm install npm -g安装全局npm,注意这个-g参数。在系统中新建环境变量NPM_HOME,值为path/nvm/npm,并将%NPM_HOME%添加到PATH变量中(注意要放在%NVM_SYMLINK%前面),执行npm -v查看配置是否正确

    • 安装cnpm(可选)

      配置国内镜像以加速,执行npm install -g cnpm --registry=http://r.cnpmjs.org命令安装,之后就可以用cnpm install 包名来代替npm install 包名

  3. 安装Hexo

    执行命令cnpm install -g hexo-cli

  4. 建站

    • 创建个人博客文件夹,设路径为path/myblog/,初始化博客文件夹:

      1
      2
      cd /path/myblog/ #之后的所有命令都要先cd进入博客根目录,不再赘述
      hexo init

      初始化后得到一个package.json文件(描述了项目所依赖的包),然后再执行cnpm install安装相关依赖

    • 生成静态网页,并在本地发布

      1
      2
      hexo generate
      hexo server

      最后通过地址"http://localhost:4000"即可访问

基本配置

选择某个现成的主题,一般下载后放到博客根目录下的主题文件夹中,即myblog/themes/Hexo将会根据主题来生成静态页面。以Melody主题为例,根据其说明文档一步一步进行配置,且该主题可以直接通过cnpm install --save hexo-theme-melody命令安装(放在myblog/node_modules/目录下)

  • LaTex支持

    说明文档有所遗漏,再细说一下,先安装Kramed,同时卸载掉默认的渲染引擎marked

    1
    2
    cnpm uninstall hexo-renderer-marked --save
    cnpm install hexo-renderer-kramed --save

    再修改melody.yml主题配置文件:

    1
    2
    3
    mathjax:
    enable: true
    cdn: https://cdn.bootcss.com/mathjax/2.7.2/MathJax.js?config=TeX-AMS-MML_HTMLorMML

    由于LaTeXmarkdown语法存在语义冲突,所以还需要对默认的转义规则进行修改,修改myblog/node_modules/kramed/lib/rules/inline.js中的两处内容:

    1
    2
    escape: /^\\([`*\[\]()# +\-.!_>])/, //替换:escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
    em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/, //替换:em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

    注意,由于node_modules文件夹不会被git跟踪(该项位于.gitignore中),因此在博客迁移后需要重新配置(所以应尽量避免修改node_modules文件夹中的内容以减少麻烦)

  • 部署到GitHub Page

    GitHub上新建仓库,命名为:用户名.github.io,再修改_config.yml文件:

    1
    2
    3
    4
    deploy:
    type: git
    repo: git@github.com:用户名/用户名.github.io
    branch: master

    注意,如果本地添加了多个GitHub账号的密钥,应根据~/.ssh/config文件修改上述repo地址为:Host:用户名/用户名.github.io,最后执行部署:

    1
    2
    3
    hexo clean
    hexo g
    hexo d //和上一条命令可以合并为:hexo g -d,如果报错:ERROR Deployer not found: git,先执行:cnpm install hexo-deployer-git --save

    部署成功后,通过地址"https://用户名.github.io"即可访问博客

  • 博客迁移和同步管理

    • 在本地博客根目录myblog/下执行git init初始化仓库,以对魔改的主题和配置文件(简称为环境数据)进行版本控制,再添加远程仓库关联:git remote add origin git@github.com:用户名/用户仓库.git,最后执行git push origin master同步本地环境数据到远程仓库(的master主分支)即可,如果要推送到远程仓库的其他指定分支(可以不存在),则执行git push origin master:指定远程仓库分支名(参考git思维导图)
    • 现在迁移博客到其他电脑设备是很容易的,首先环境初始化(安装gitnodejsHexo),然后克隆上述远程仓库(的主分支)至本地:git clone git@github.com:用户名/用户仓库.git(也可以克隆仓库下的指定分支,git clone -b 指定分支 git@github.com:用户名/用户仓库.git),再根据packge.json安装依赖,最后hexo ghexo s就能在本地重新打开博客了
  • Algolia搜索

    首先注册Algolia账户,新建index,并获取Application IDSearch-Only API KeyAdmin API Key,然后执行cnpm install --save hexo-algolia,并配置_config.yml

    1
    2
    3
    4
    algolia:
    applicationID: 'application id'
    apiKey: 'search-only api Key'
    indexName: 'index name'

    再配置melody.yml

    1
    2
    3
    4
    5
    6
    7
    8
    algolia_search:
    enable: true # or false
    hits:
    per_page: 10 # the number of search results per page
    labels:
    input_placeholder: Search for Posts
    hits_empty: "We didn't find any results for the search: ${query}" # if there are no result
    hits_stats: "${hits} results found in ${time} ms"

    最后执行hexo algolia生成索引文件并上传到Algolia服务器,出错:ERROR [hexo-algolia] Please set an HEXO_ALGOLIA_INDEXING_KEY environment variable to enable content indexing. ERROR >> Read https://npmjs.com/hexo-algolia#api-key for more informations,根据提示,直接在当前cmd中创建该环境变量(重启窗口会失效,建议“此电脑右键-属性-高级系统设置-环境变量”,博客迁移后注意要重新配置):set HEXO_ALGOLIA_INDEXING_KEY=admin api key,重新执行hexo algolia,成功