Add additional compilation property to the templateParam object

This commit is contained in:
Michael Wolfenden 2016-03-02 13:28:26 +10:00
parent f707c98d32
commit 3005cec0f9
4 changed files with 24 additions and 4 deletions

View File

@ -212,7 +212,8 @@ HtmlWebpackPlugin.prototype.executeTemplate = function (templateFunction, chunks
htmlWebpackPlugin: {
files: assets,
options: self.options
}
},
compilation: compilation
};
var html = '';
try {

View File

@ -156,16 +156,16 @@ module.exports = '<html>...</html>';
```
More advanced template.js
```js
module.exports = function(compilationResult, chunks, assets, compilation) {
module.exports = function(templateParams) {
return '<html>..</html>';
};
```
Using loaders inside a template.js
```js
// This function has to return a string or promised string:
module.exports = function(compilationResult, chunks, assets, compilation) {
module.exports = function(templateParams) {
// Play around with the arguments and then use the webpack jade loader to load the jade:
return require('./template.jade')({assets: assets});
return require('./template.jade')({assets: templateParams.htmlWebpackPlugin.files});
};
```

View File

@ -1047,4 +1047,20 @@ describe('HtmlWebpackPlugin', function () {
}, [
/<script src="common_bundle.js">.+<script src="aTheme_bundle.js">.+<script src="util_bundle.js">/], null, done);
});
it('should add the webpack compilation object as a property of the templateParam object', function (done) {
testHtmlPlugin({
entry: path.join(__dirname, 'fixtures/index.js'),
output: {
path: OUTPUT_DIR,
filename: 'index_bundle.js'
},
plugins: [
new HtmlWebpackPlugin({
template: path.join(__dirname, 'fixtures/templateParam.js'),
inject: false
})
]
}, ['templateParams.compilation exists: true'], null, done);
});
});

3
spec/fixtures/templateParam.js vendored Normal file
View File

@ -0,0 +1,3 @@
module.exports = function (templateParams) {
return 'templateParams.compilation exists: ' + !!templateParams.compilation;
};