import nunjucks from 'nunjucks'; const babelPluginNunjucks = ({ types: t }) => { return { pre(state) { const options = state.opts.plugins[0].options; this.njkenv = new nunjucks.Environment(new nunjucks.FileSystemLoader(options.templatesFolder)); if (options.globals) { for (const { name, value } of options.globals) { this.njkenv.addGlobal(name, value); } } }, visitor: { TaggedTemplateExpression(path) { if (path.get('tag').isIdentifier({ name: 'njk' })) { const render = this.njkenv.renderString(path.node.quasi.quasis[0].value.raw); path.replaceWith(t.stringLiteral(render)); } }, }, }; }; export default babelPluginNunjucks;