A renderer is used to render content.
Synopsis
hexo.extend.renderer.register(
name,
output,
function (data, options) {
// ...
},
sync,
);| Argument | Description |
|---|---|
name | Input filename extension (lower case, without leading .) |
output | Output filename extension (lower case, without leading .) |
sync | Sync mode |
Three arguments will be passed into the render function:
| Argument | Description |
|---|---|
data | Include two attributes: file path path and file content text. path won’t necessarily exist. |
option | Options |
callback | Callback function of two parameters err, value. |
Example
Async Mode
var stylus = require("stylus");
// Callback
hexo.extend.renderer.register(
"styl",
"css",
function (data, options, callback) {
stylus(data.text).set("filename", data.path).render(callback);
},
);
// Promise
hexo.extend.renderer.register("styl", "css", function (data, options) {
return new Promise(function (resolve, reject) {
resolve("test");
});
});Sync Mode
var ejs = require("ejs");
hexo.extend.renderer.register(
"ejs",
"html",
function (data, options) {
options.filename = data.path;
return ejs.render(data.text, options);
},
true,
);Disable Nunjucks tags
Nunjucks tags {{ }} or {% %} (utilized by tag plugin) are processed by default, to disable:
function lessFn(data, options) {
// do something
}
lessFn.disableNunjucks = true;
hexo.extend.renderer.register("less", "css", lessFn);