babel-plugin-nunjucks/index.js

29 lines
1.2 KiB
JavaScript
Raw Normal View History

2022-02-01 19:07:08 +03:00
import nunjucks from 'nunjucks';
2021-10-04 21:19:14 +03:00
2022-02-01 19:07:08 +03:00
export default ({types: t}) => {
return {
visitor: {
Identifier(path, state) {
for (let i = 0; i < state.opts.varNames.length; i += 1) {
if (
path.parentPath.type === 'VariableDeclarator' &&
path.isIdentifier({name: state.opts.varNames[i]})
) {
const templatesFolder = state.opts.templatesFolder;
const value = path.parentPath.get('init').node.quasis[0].value.raw;
const env = new nunjucks.Environment(new nunjucks.FileSystemLoader(templatesFolder));
2022-08-28 23:09:58 +03:00
if (state.opts.globals) {
state.opts.globals.forEach(({name, value}) => {
env.addGlobal(name, value);
});
}
2022-02-01 19:07:08 +03:00
const render = env.renderString(value);
path.parentPath.get('init').node.quasis = [t.templateElement({cooked: render, raw: render})];
break;
}
}
},
},
};
2021-10-04 21:19:14 +03:00
};