A Metalsmith plugin for registering Handlebars helpers.
Install via npm and then add the metalsmith-register-helpers
key to your metalsmith.json
plugins, like so:
{
"plugins": {
"metalsmith-register-helpers": {
"directory": "path/to/helpers"
}
}
}
This will register all helpers in the specified directory, and use the first part of the filename as the helper name. As a simple (and admittedly contrived) example, you could add a helper that wraps everything in <strong>
tags, stored in the file strong.js
:
module.exports = function (content) {
return '<strong>' + content + '</strong>'
}
And then access it in your templates:
<pre><code>{{ strong myJSONMetadata }}</code></pre>
There are lots of helpers you could try this with in the Handlebars Helpers library. For example, add the capitalizeFirst
helper into _helpers/capitalizeFirst.js
:
/**
* capitalizeFirst.js
* http://git.io/vUJU2
*/
module.exports = function (str) {
if (str && typeof str === "string") {
return str.charAt(0).toUpperCase() + str.slice(1)
}
}
Now, you can access it in your templates:
<h1>{{ capitalizeFirst "the lost typo devision." }}</h1>
You may also include multiple helpers in a single file:
module.exports = {
capitalizeFirst: function (str) {
if (str && typeof str === "string") {
return str.charAt(0).toUpperCase() + str.slice(1)
}
},
json: function (context) {
return JSON.parse(context);
},
someOtherHelper: function () {
// Etc.
}
}
If you’d prefer, this is another way to include helpers installed as dependencies
in your package.json
file into your Metalsmith project. For example, you can install the Moment Handlebars helper:
npm install --save helper-moment
Then, add it as a helper in _helpers/moment.js
:
var helperMoment = require('helper-moment');
module.exports = function (str, pattern){
return helperMoment(str, pattern)
}
You can now access it in your template:
<time date-time="{{ date }}">{{ moment date format="MMMM Do, YYYY"}}</time>
Copyright © 2015 Kenneth Ormandy
Copyright © 2015 Lin Clark