зарегистрировать пользовательский хелпер руля в Metalsmith

Я использую Metalsmith для создания статического сайта из файла уценки.

Люди, редактирующие файл уценки, напишут: {{{link "docs/file.docs"}}} и ожидают ссылку на сайте с этим файлом (относительная ссылка)

Помощник прост, я протестировал, и он работает:

handlebars.registerHelper('link', function(path) {
  var url = handlebars.escapeExpression(path);

  return new handlebars.SafeString(
    "<a href='" + url + "'>" + url + "</a>"
  );
});

Но как я могу добавить этого помощника и использовать его в своей конфигурации кузнеца?

Вот краткий пример.
index.md:

etc etc link to the page is {{{link "docs/file.doc"}}}

Я хочу, чтобы с помощью простого make была создана следующая часть html:

etc etc link to the page is <a href='docs/file.doc'>docs/file.doc</a>

person StLia    schedule 01.11.2016    source источник


Ответы (1)


Я нашел ответ здесь: https://segment.com/blog/building-technical-documentation-with-metalsmith/

Вот моя конфигурация index.js для Metalsmith:

var Metalsmith  = require('metalsmith');
var markdown    = require('metalsmith-markdown');
var permalinks  = require('metalsmith-permalinks');
var handlebars = require('handlebars');
var inplace = require('metalsmith-in-place');

handlebars.registerHelper('link', function(path) {
  var url = handlebars.escapeExpression(path);

  return new handlebars.SafeString(
    "<a href='" + url + "'>" + url + "</a>"
  );
});

Metalsmith(__dirname)
  .metadata({ title: "Static Site" })
  .source('./src')
  .destination('/var/www')
  .use(inplace({ engine: 'handlebars', pattern: '**/*.md' }))
  .use(markdown())
  .build(function(err, files) {
    if (err) { throw err; }
  });
person StLia    schedule 02.11.2016