技巧: HEXO优雅操作

谈一些小技巧, 策略, 效率工具。

大致如下:

本地图片

不使用图床工具,而直接把文章中要用的图片存在本地

创建文章的时候,自动生成相关的目录保存.

  • 安装插件 npm install https://github.com/CodeFalling/hexo-asset-image --save;
  • 配置 post_asset_folder 为 true。
  • 使用的时候,只需要图片名就可以 ![](xxx.jpg)

说明:当执行hexo g命令时,会自动把图片复制到 public 文件的对应目录下。

(存在本地,之后可以一键上传远端云盘,图床–我一开始就采用的远端图床,自己写的脚本)

控制图片的大小,可以采用 hexo 的语法(而不是 markdown 语法):

1
2
3
4
5
6
// 语法
{% img [class names] /path/to/image [width] [height] [title text [alt text]] %}
// 实例
{% img full-image /hexo-experiences/PL01.jpg 180 180 hello %}
// 生成的代码
<img src="/blog/hexo-experiences/PL01.jpg" class="full-image" width="180" height="180" title="hello">

(目录是相对于整个博客目录而言,并且一定要以 / 开头)

新文章命名优化

markdown文章名加上日期, 方便管理

编辑网站配置文件_config.yml中的 new_post_name 参数来改变默认的文件名称,
举例来说,设为 :year-:month-:day.:title.md 可让您更方便的通过日期来管理文章。

1
2
3
4
# 新建文章默认文件名
new_post_name: :year-:month-:day.:title.md # File name of new posts
# 默认布局
default_layout: post

源码多端同步

保存 _posts 目录下的 md 文件即可

我一般是在本地保存了一个裸库,把相关博客整个都做了版本保存。
blog 整个目录都在一个库中,每一个版本就是一个分支(branch)

当前追踪的文件大致如下:

链接加密处理

唯一链接

多次更改文章题目或者变更文章发布时间,在默认设置下,文章链接是标题+时间,
也就是说,文章链接都会改变,不利于搜索引擎收录,也不利于分享。唯一永久链接才是更好的选择。
通俗来说:标题+时间进行md5然后再转base64,保存在front-matter中

  • 注册before_post_render钩子,然后取出来 abbrlink 这个属性看是否存在,存在的就不管了,否则就生成连接
  • 使用了 nodejs 自带的 crypto 模块来获取 md5 校验值,用 hexo-front-matter 来转换front-matter,然后用hexo-fs来保存文件

具体操作如下: (站点的_config.yml)

  • 安装插件: npm install hexo-abbrlink –save
  • permalink 改成 permalink: posts/:abbrlink/
  • 添加如下代码
    1
    2
    3
    4
    # abbrlink config
    abbrlink:
    alg: crc32 # 算法:crc16(default) and crc32
    rep: dec # 进制:dec(default) and hex

如果有 UUID 类的插件,道理是一样的。

双线部署

同时部署到 coding 和 github

站点_config.yml配置如下:

1
2
3
4
5
6
deploy:
type: git
repo:
github: git@github.com:<ur_name>/<ur_name>.github.io.git
coding: git@git.coding.net:<ur_name>/<ur_name>.git
branch: master

(都是 master 分支,可以写到一起,在链接后面直接写分支名字:地址,分之名, 不同则分开写)

1
2
3
4
5
deploy:
type: git
repository:
github: git@github.com:<ur_name>/<ur_name>.github.io.git,master
coding: git@git.coding.net:<ur_name>/<ur_name>.git,dev

域名绑定

  • GitHub绑定:在Hexo的source文件夹新建一个CNAME文件,内容写上域名即可(不需要写www), 只能写一个。
  • Coding绑定:coding可以绑定多个域名,并且不用手动添加CNAME文件,直接登录coding设置就好了
  • 进入项目->点击左侧的代码->然后点击Pages 服务->输入域名->点击添加域名绑定

图床处理

上传到七牛云图床

七牛云插件其实已经就做了很好了,但是还不够,需要定制:

  • 需要边写边看效果(即时反馈)
  • 写的时候(markdown文件)就用绝对地址,而不是本地地址
  • 把本地图片上传工作和博客生成部署工作分开, 一次做好一件事儿
    思路如下
  • 写文章的时候把图片和文章放在一个目录下 (例如:/Users/merlin/Pictures/blog_pic)
  • 然后命令行执行up <文件名>, 直接返回相关的 markdown 图片链接格式到剪切板.
  • 引用图片的时候直接使用图片的名字

代码实现

理论上而言,可以查看官方的对象存储库,然后用熟悉的语言,调用相关的API即可。
但是官方已经提供了qshell工具,那就直接使用一下吧, 包装一下,定制一下。

具体的代码实现,可以参考我的作品目录: 图床上传小工具

文章目录
  1. 1. 本地图片
    1. 1.1. 不使用图床工具,而直接把文章中要用的图片存在本地
  2. 2. 新文章命名优化
    1. 2.1. markdown文章名加上日期, 方便管理
  3. 3. 源码多端同步
    1. 3.1. 保存 _posts 目录下的 md 文件即可
  4. 4. 链接加密处理
    1. 4.1. 唯一链接
  5. 5. 双线部署
    1. 5.1. 同时部署到 coding 和 github
  6. 6. 图床处理
    1. 6.1. 上传到七牛云图床
    2. 6.2. 代码实现
|