如何在节点模块中注册把手局部?

时间:2019-03-13 18:31:24

标签: node.js module handlebars.js require express-handlebars

我有这段代码可以自动将文件注册为助手。 它最初是在我的主应用程序中,但我希望它成为必需的模块。

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'));

0 个答案:

没有答案