Merge basic webpack 2 support #225
# By Alexander Wesolowski (1) and Jan Nicklas (1) * commit 'c883a8663c07da04cb6b713bca45ed65a93f7e5c': Move template.js into loader.js Fix Webpack2 compatibility. Closes #213.
This commit is contained in:
commit
854242a24c
|
|
@ -20,8 +20,31 @@ module.exports = function (source) {
|
|||
if (/\.js$/.test(this.request)) {
|
||||
return source;
|
||||
}
|
||||
// Use underscore for a minimalistic loader
|
||||
|
||||
// The following part renders the tempalte with lodash as aminimalistic loader
|
||||
//
|
||||
// Get templating options
|
||||
var options = loaderUtils.parseQuery(this.query);
|
||||
var template = _.template(source, options);
|
||||
return 'var _ = require(' + loaderUtils.stringifyRequest(this, require.resolve('lodash')) + ');module.exports = ' + template;
|
||||
// Webpack 2 does not allow with() statements, which lodash templates use to unwrap
|
||||
// the parameters passed to the compiled template inside the scope. We therefore
|
||||
// need to unwrap them ourselves here. This is essentially what lodash does internally
|
||||
// To tell lodash it should not use with we set a variable
|
||||
var template = _.template(source, _.defaults(options, { variable: 'data' }));
|
||||
// All templateVariables which should be available
|
||||
// @see HtmlWebpackPlugin.prototype.executeTemplate
|
||||
var templateVariables = [
|
||||
'webpack',
|
||||
'webpackConfig',
|
||||
'htmlWebpackPlugin'
|
||||
];
|
||||
return 'var _ = require(' + loaderUtils.stringifyRequest(this, require.resolve('lodash')) + ');' +
|
||||
'module.exports = function (templateParams) {' +
|
||||
// Declare the template variables in the outer scope of the
|
||||
// lodash template to unwrap them
|
||||
templateVariables.map(function (variableName) {
|
||||
return 'var ' + variableName + ' = templateParams.' + variableName;
|
||||
}).join(';') + ';' +
|
||||
// Execute the lodash template
|
||||
'return (' + template.source + ')();' +
|
||||
'}';
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue