ejs-loader
Version:
EJS (Underscore/LoDash Templates) loader for webpack
31 lines (26 loc) • 1.15 kB
JavaScript
var lodashTemplate = require('lodash/template');
var lodashExtend = require('lodash/extend');
var lodashIsString = require('lodash/isString');
var loaderUtils = require('loader-utils');
module.exports = function (source) {
this.cacheable && this.cacheable();
var options = loaderUtils.getOptions(this) || {};
var useESModule = options.esModule !== false;
if (useESModule && !options.variable) {
throw new Error(`
To support the 'esModule' option, the 'variable' option must be passed to avoid 'with' statements
in the compiled template to be strict mode compatible. Please see https://github.com/lodash/lodash/issues/3709#issuecomment-375898111.
To enable CommonJS, please set the 'esModule' option to false.
`);
}
['escape', 'interpolate', 'evaluate'].forEach(function (templateSetting) {
var setting = options[templateSetting];
if (lodashIsString(setting)) {
options[templateSetting] = new RegExp(setting, 'g');
}
});
var template = lodashTemplate(source, lodashExtend({}, options));
return useESModule
? `export default ${template}`
: `module.exports = ${template}`;
};