From 11c41805e0c3dbebb7109719c4f3c780d32feab5 Mon Sep 17 00:00:00 2001 From: Josef Engelfrost Date: Thu, 11 Oct 2018 21:56:09 +0200 Subject: [PATCH] feat(engine-handlebars): Default location for helpers, like engine-nunjucks --- .../lib/engine_handlebars.js | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/packages/engine-handlebars/lib/engine_handlebars.js b/packages/engine-handlebars/lib/engine_handlebars.js index 671212ec8..5bd4ed632 100644 --- a/packages/engine-handlebars/lib/engine_handlebars.js +++ b/packages/engine-handlebars/lib/engine_handlebars.js @@ -40,6 +40,14 @@ function escapeAtPartialBlock(partialString) { return partial; } +function loadHelpers(helpers) { + helpers.forEach(globPattern => { + glob.sync(globPattern).forEach(filePath => { + require(path.join(process.cwd(), filePath))(Handlebars); + }); + }); +} + const engine_handlebars = { engine: Handlebars, engineName: 'handlebars', @@ -125,26 +133,32 @@ const engine_handlebars = { }, /** - * Accept a Pattern Lab config object from the core and put it in - * this module's closure scope so we can configure engine behavior. + * Accept a Pattern Lab config object from the core and use the settings to + * load helpers. * * @param {object} config - the global config object from core */ usePatternLabConfig: function(config) { + let helpers; + try { - let helpers = config.engines.handlebars.helpers; + // Look for helpers in the config + helpers = config.engines.handlebars.helpers; if (typeof helpers === 'string') { helpers = [helpers]; } - - helpers.forEach(globPattern => { - glob.sync(globPattern).forEach(filePath => { - require(path.join(process.cwd(), filePath))(Handlebars); - }); - }); } catch (error) { - // No helpers to load + // Look for helpers in default location + const configPath = 'patternlab-handlebars-config.js'; + if (fs.existsSync(path.join(process.cwd(), configPath))) { + helpers = [configPath]; + } + } + + // Load helpers if they were found + if (helpers) { + loadHelpers(helpers); } }, };