Как я могу зарегистрировать парциальные части руля внутри узловых модулей? - PullRequest
0 голосов
/ 13 марта 2019

У меня есть этот код, который автоматически регистрирует файлы в качестве помощников.Первоначально он был в моем основном приложении, но я хочу, чтобы он был обязательным модулем.

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