A helper makes it easy to quickly add snippets to your templates. We recommend using helpers instead of templates when you’re dealing with more complicated code.

Helpers can not be accessed from source files.


hexo.extend.helper.register(name, function () {
// ...


hexo.extend.helper.register("js", function (path) {
return '<script src="' + path + '"></script>';
<%- js('script.js') %>
// <script src="script.js"></script>


Where to place custom helper?

Place it under scripts/ or themes/<yourtheme>/scripts/ folder.

How do I use another registered helper in my custom helper?

All helpers are executed in the same context. For example, to use url_for() inside a custom helper:

hexo.extend.helper.register("lorem", function (path) {
return '<script src="' + this.url_for(path) + '"></script>';

How do I use a registered helper in another extension (e.g. Filter, Injector)?

hexo.extend.helper.get will return the helper function, but it needs to have hexo as its context, so:

const url_for = hexo.extend.helper.get("url_for").bind(hexo);