Регистрация Сборка рулей Помощники
Я пытаюсь сделать что-то, что кажется относительно простым, из документов Assemble и других репозиториев, на которые я смотрел, но по какой-то причине у меня возникают проблемы с регистрацией моих помощников Handlebars. Помощник находится в помощниках> helper-classgrid.js
module.exports.register = function (Handlebars, options, params) {
Handlebars.register('classgrid', function (index, options) {
gridclass: function (index, options) {
if (index === 0 || index % 4 === 0) {
return options.fn(this);
}
return options.inverse(this);
};
};
Мой gruntfile, где config.helpers = helpers:
assemble: {
options: {
layoutdir: '<%= config.guts %>/templates/layouts/',
assetsDir: '<%= grunt.config.get("assets_dir") %>',
environmentIsProduction: '<%= grunt.config.get("environmentIsProduction") %>',
environmentIsDev: '<%= grunt.config.get("environmentIsDev") %>',
data: ['<%= config.content %>/**/*.json', '<%= grunt.config.get("environmentData") %>'],
helpers: ['<%= config.helpers %>/helper-*.js']
},
}
Код шаблона:
{{#classgrid @index}}
// do something here
{{/classgrid}}
Теперь, когда я реализую свой помощник в своем шаблоне Handlerbars и запускаю задачу grunt, содержащую задачу сборки, я получаю ошибку
Warning: Missing helper: 'classgrid' Use --force to continue.
Я не уверен, что я сделал неправильно, или мне нужно создать отдельный пакет NPM для моих помощников, который, как кажется, предлагается в документации по сборке. Я посмотрел на эти 2 репозитория, которые, кажется, делают то, что я пытаюсь сделать
https://github.com/buildingblocks/bb-prototype-website/blob/master/Gruntfile.js https://github.com/ghost-town/layouts-example/blob/master/Gruntfile.js#L33
1 ответ
Не уверен, что это просто проблема копирования / вставки, но приведенный выше код выглядит неправильно... вот что должно работать:
module.exports.register = function (Handlebars, opts, params) {
Handlebars.registerHelper('classgrid', function (index, options) {
if (index === 0 || index % 4 === 0) {
return options.fn(this);
}
return options.inverse(this);
});
};
Я постараюсь создать тестовый проект, чтобы убедиться, что он работает.
Изменить: После создания тестового проекта, я вижу, что вы использовали Handlebars.register
вместо Handlebars.registerHelper
, Я обновил код до рабочего решения. Надеюсь это поможет.