Hexo的搭建及写作

搭建

  1. Windows 本地搭建,安装 Hexo 完成后执行如下命令即可看到hexo文件结构;
    hexo init <folder>
    cd <folder>
    npm install
  2. 采用GitHub+Vercel方式
  • 安装git和node.js
  • 处理github密钥,用管理员打开shell, cd 到C:\Users\username.ssh目录下
    把id_xxxxxxx.pub 和 id_xxxxxxx 两个文件拷入 C:\Users\username\.ssh
    ssh-add id_xxxxxxx.pub 不成功应该也没事
    ssh -T git@github.com 测试key是否应用成功,显示Hi gitusername! You've successfully authenticated, but GitHub does not provide shell access.即可
  • 新建blog文件夹,clone并push
    git remote add origin git@github.com:gitusername/hexo.git
    git init
    git clone git@github.com:gitusername/hexo.git
  • 安装hexo,在本地安装HEXO,如果本地重装/迁移/Pull后也需要在本地文件夹路径下执行HEXO安装步骤即使不安装hexo也不影响git push以及Vercel
    npm install -g hexo-cli
    hexo init # !!这一个命令没有测试过,可能会覆盖掉clone下来的文件!!
  • 在Vercel里新建项目选择GitHub上已有对应项目即可,注意本地hexo g后的public文件夹并不会被上传

文件目录及层级

  • source - 对应post,draft和page的原始文件. 可以是md文件,也可以是html文件
  • public- Hexo generate 后渲染的静态页面资源存放位置
  • scaffolds- draft/page/post 新建时默认的模板,主要规范了front-matter样式,尤其是post,可以把常用的categories和tag都放到模板里,以删减而不是手动添加的方式来给每一个post分类及打标签。注意层级

写作

关于Page

  • Page 是一个全新的页面,与Home, Archives同级别
    关于Post
  • 采用hexo new命令中指定文章的layout
    默认为 post,可以通过修改 _config.yml 中的 default_layout 参数来指定默认布局
  • front matter 为了和obsidian保持一致,只设置tags.
  • 注意:暂时如果直接在_post文件夹下新建md文件会导致首页tag等sidebar消失,serach图标无法使用。只能通过hexo new命令新建之后再修改内容。目前初步定位原因在新post正文,md符号使用混乱造成。
  • 本地generate及server测试
    hexo g
    hexo generate --watch 监视文件变动并立即重新生成静态文件,在生成时会比对文件的 SHA1 checksum,只有变动的文件才会写入。
    hexo g -f 强制重新渲染重新生成public文件夹
    hexo s
  • 更新post后命令
    git status
    git add .
    git commit -m 'add 2nd post aapanel' #这里会用git默认的文本编辑器打开备注文件,打入文字并关闭该文件后会自动保存
    git push

FAQ

  1. 运行hexo如果出现hexo.ps1,因为在此系统上禁止运行脚本打开设置-> 搜索power->选择选项:允许powershell较笨在不签名的情况下运行.勾选,点击应用就可以了
  2. 如果出现HEXO报错
    Case1
1
2
`npm uninstall hexo`
`npm install hexo --no-optional`

Case2

1
2
`npm uninstall hexo-cli -g`
`npm install hexo-cli -g`

Case3

1
2
`npm install hexo --save`
`npm install -g node-gyp`
  1. Hexo的markdown渲染出问题
  • 目前块引用(Blockquotes)的符号>暂时不能正常使用,原因不明。使用代码符号``或者```bash代替