配置hexo工作环境

配置通用的hexo工作环境,形成固定动作,提高配置效率。

  • 安装配置node、git

    • 安装node

      windows环境下,下载安装包或portable包。对于portable包而言,本工作环境仅需配置Path

      linux环境下,用包管理器安装node。

    • 安装git

      windows环境下,下载安装包或portable包。对于portable,环境变量配置如下:

      set gitdir=c:\portablegit
      set path=%gitdir%\cmd;%path%

      注:可在windows界面保存环境变量,此电脑右键->属性->高级系统设置->环境变量,环境变量名为gitdirpath

      linux环境下,用包管理器安装git。

      通用配置1:创建ssh-key(用于免密访问git remote repo,默认公钥文件~/.ssh/id_rsa.pub

      ssh-keygen

      通用配置2:设置user.name和user.email

      git config --global user.name <yourname>
      git config --global user.email <youremail>
  • 安装配置hexo

    • 安装hexo

      运行命令

      npm install hexo-cli -g

      注:windows环境下,shell环境请首选cmd,而不是powershellgit-bash

    • 配置hexo

      初始化工作目录,获取theme文件

      hexo init <your-blog-folder-name>
      cd <your-blog-folder-name>
      git clone theme-repo-url themes/<theme-name>

      注:windows环境下,powershell默认不能运行hexo命令,仍建议首选cmd

      注:若使用git部署,在运行hexo deploy命令时,会报错ERROR Deployer not found: git,此时需执行npm install --save hexo-deployer-git安装所需module。

      获取用户*.md文件

      git clone user-post-repo-url <mysourcefolder>

      注:用户*.md文件可理解为<your-blog-folder-name>/source文件夹的全部内容,此外还包含自定义的_config.yml文件和_date/文件夹。_config.yml负责覆盖hexo配置,_date/负责覆盖theme配置。

      关联用户*.md文件和hexo,在<your-blog-folder-name>文件夹下创建名为source的符号链接,指向<mysourcefolder>(需要先重命名或删除原source目录)。

      注:windows环境下,使用mklink命令创建符号链接,注意事项可参考我的这篇文章。

  • 验证

    启动server

    hexo server --config <your-blog-folder-name>/source/_config.yml --cwd  <your-blog-folder-name> --debug --draft

    部署

    hexo deploy --config <your-blog-folder-name>/source/_config.yml --cwd  <your-blog-folder-name> --debug --draft
  • 工作流程

    推荐的工作流程如下:

    启动server->写post(重复动作/本地检查/commit)->hexodeploy(包含远端检查)->push动作(保存source/内容至远端仓库)

    注:结合CI/CD工具,push动作就能触发自动部署,工作流程变为-启动server->写post(重复动作/本地检查/commit/push)。涉及另一个story,不赘述。

  • 结束语

    此配置过程对官方文件修改极少,仅创建了一个名为source的符号链接,方便官方版本的替换;同时解耦了用户*.md文件和官方文件,最大限度减少了相互影响。

    此配置过程可通过脚本自动化完成,也可用docker实现。2年前用bash实现了一个helper,现在看来略显幼稚,有时间再改吧。

    注:再次强调windows环境下小心使用mklink,windows环境下git-bash中的ln不能正常工作,避坑请点这里