谈一些小技巧, 策略, 效率工具。
大致如下:
本地图片
不使用图床工具,而直接把文章中要用的图片存在本地
创建文章的时候,自动生成相关的目录保存.
- 安装插件
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
5deploy:
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
工具,那就直接使用一下吧, 包装一下,定制一下。
具体的代码实现,可以参考我的作品目录: 图床上传小工具