From 3005cec0f911eb990c550b48106c2b1fdd681e0d Mon Sep 17 00:00:00 2001
From: Michael Wolfenden <michael.wolfenden@gmail.com>
Date: Wed, 2 Mar 2016 13:28:26 +1000
Subject: [PATCH] Add additional compilation property to the templateParam
 object

---
 index.js                       |  3 ++-
 migration.md                   |  6 +++---
 spec/HtmlWebpackPluginSpec.js  | 16 ++++++++++++++++
 spec/fixtures/templateParam.js |  3 +++
 4 files changed, 24 insertions(+), 4 deletions(-)
 create mode 100644 spec/fixtures/templateParam.js

diff --git a/index.js b/index.js
index 7714d4e1..7838ba13 100644
--- a/index.js
+++ b/index.js
@@ -212,7 +212,8 @@ HtmlWebpackPlugin.prototype.executeTemplate = function (templateFunction, chunks
         htmlWebpackPlugin: {
           files: assets,
           options: self.options
-        }
+        },
+        compilation: compilation
       };
       var html = '';
       try {
diff --git a/migration.md b/migration.md
index e4695d3c..0938a292 100644
--- a/migration.md
+++ b/migration.md
@@ -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});
   };
 ```
 
diff --git a/spec/HtmlWebpackPluginSpec.js b/spec/HtmlWebpackPluginSpec.js
index bd567f8e..65dadf1c 100644
--- a/spec/HtmlWebpackPluginSpec.js
+++ b/spec/HtmlWebpackPluginSpec.js
@@ -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);
+  });
 });
diff --git a/spec/fixtures/templateParam.js b/spec/fixtures/templateParam.js
new file mode 100644
index 00000000..55741869
--- /dev/null
+++ b/spec/fixtures/templateParam.js
@@ -0,0 +1,3 @@
+module.exports = function (templateParams) {
+  return 'templateParams.compilation exists: ' + !!templateParams.compilation;
+};