我有这段代码可以自动将文件注册为助手。 它最初是在我的主应用程序中,但我希望它成为必需的模块。
register-helpers.js 模块:
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');
但是感觉不对,而且必须在每一行中都包含它。
我也不明白当某些助手只包含在主文件中时(在添加hbs作为参数之前)如何使用handlebars-helper-svg。
hbs.registerHelper('svg', require('handlebars-helper-svg'));