У меня есть этот код, который автоматически регистрирует файлы в качестве помощников.Первоначально он был в моем основном приложении, но я хочу, чтобы он был обязательным модулем.
register-helpers.js module:
var glob = require("glob");
var hbs = require('hbs');
var path = require('path');
module.exports = (pathglob) => {
console.log('\nregistering helpers');
glob.sync(pathglob)
//return object for each project with name and all routes
.forEach(function (file) {
var name = '';
//var parentFolder = path.dirname(file).split(path.sep).pop();
//if (parentFolder != 'helpers') name += parentFolder + '-'; // this adds the subfolder name into the helper name
name += path.basename(file).replace(/\.js|_/g,''); console.log(' ','{{'+name+'}}',file);
hbs.registerHelper(name, module.parent.require('./'+file));
});
};
app.js:
var hbs = require('hbs');
require('hbs-register-helpers')('modules/hbs/helpers/**/*.js');
Но он говорит, что мои помощники не загружены.Они помещаются в другой экземпляр руля, потому что он загружен в другой файл?Как мне зарегистрировать их в том же экземпляре руля, что и app.js?Должен ли я передавать hbs в качестве аргумента?
Вот что я решил сделать:
require('hbs-register-helpers')(hbs,'projects/*/helpers/*.js');
Но это нехорошо, и раздражает необходимость включатьчто в каждой строке.
Я также не понимаю, как некоторые из моих помощников могут использовать handlebars-helper-svg, когда он включен только в основной файл (до добавления hbs в качестве аргумента).
hbs.registerHelper('svg', require('handlebars-helper-svg'));