Hexo 中有两种形式的插件:脚本(Scripts)、插件(Packages)。脚本及插件具体编写、发布流程请查看官方文档Hexo 插件。本文仅总结 hexo 插件编写。
扩展类型
控制台(Console)
控制台是 Hexo 与开发者之间沟通的桥梁。1
2
3hexo.extend.console.register(name, desc, options, function(args){
// ...
});
部署器(Deployer)
部署器帮助开发者将网站快速部署到远程服务器上,避免了复杂的指令。1
2
3hexo.extend.deployer.register(name, function(args){
// ...
});
过滤器(Filter)
过滤器用于修改特定文件,Hexo 将这些文件依序传给过滤器,而过滤器可以针对文件进行修改,这个概念借鉴自 WordPress。1
2hexo.extend.filter.register(type, function(){
}, priority);
过滤器列表
before_post_render
在文章开始渲染前执行。您可以参考 文章渲染 以了解执行顺序。1
2
3
4
5// 举例来说,把标题转为小写:
hexo.extend.filter.register('before_post_render', function(data){
data.title = data.title.toLowerCase();
return data;
});after_post_render
在文章渲染完成后执行。您可以参考 文章渲染 以了解执行顺序。1
2
3
4
5// 举例来说,把 @username 取代为 Twitter 的开发者链接。
hexo.extend.filter.register('after_post_render', function(data){
data.content = data.content.replace(/@(\d+)/, '<a href="http://twitter.com/$1">#$1</a>');
return data;
});before_exit
在 Hexo 即将结束时执行,也就是在 hexo.exit 被调用后执行。1
2
3hexo.extend.filter.register('before_exit', function(){
// ...
});before_generate
在生成器解析前执行。1
2
3hexo.extend.filter.register('before_generate', function(){
// ...
});after_generate
在生成器解析后执行。1
2
3hexo.extend.filter.register('after_generate', function(){
// ...
});template_locals
修改模板的 局部变量。1
2
3
4
5// 举例来说,在模板的局部变量中新增当前时间:
hexo.extend.filter.register('template_locals', function(locals){
locals.now = Date.now();
return locals;
});after_init
在 Hexo 初始化完成后执行,也就是在 hexo.init 执行完成后执行。1
2
3hexo.extend.filter.register('after_init', function(){
// ...
});new_post_path
用来决定新建文章的路径,在建立文章时执行。1
2
3hexo.extend.filter.register('new_post_path', function(data, replace){
// ...
});post_permalink
用来决定文章的永久链接。1
2
3hexo.extend.filter.register('post_permalink', function(data){
// ...
});after_render
在渲染后执行,您可以参考 渲染 以了解更多信息。server_middleware
新增服务器的 Middleware。app 是一个 Connect 实例。1
2
3
4
5
6
7// 举例来说,在响应头中新增 X-Powered-By: Hexo。
hexo.extend.filter.register('server_middleware', function(app){
app.use(function(req, res, next){
res.setHeader('X-Powered-By', 'Hexo');
next();
});
});
生成器(Generator)
生成器根据处理后的原始文件建立路由。1
2hexo.extend.generator.register(name, function(locals){
});
辅助函数(Helper)
辅助函数帮助您在模板中快速插入内容,建议您把复杂的代码放在辅助函数而非模板中。1
2hexo.extend.helper.register(name, function(){
});
迁移器(Migrator)
迁移器帮助开发者从其他系统迁移到 Hexo。1
2
3hexo.extend.migrator.register(name, function(args){
// ...
});
处理器(Processor)
处理器用于处理 source 文件夹内的原始文件。完整说明请参考 Box1
2hexo.extend.processor.register(rule, function(file){
});
渲染引擎(Renderer)
渲染引擎用于渲染内容。1
2hexo.extend.renderer.register(name, output, function(data, options){
}, sync);
标签插件(Tag)
标签插件帮助开发者在文章中快速插入内容。1
2hexo.extend.tag.register(name, function(args, content){
}, options);