diff --git a/package.json b/package.json index 883147c..62cbdc7 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ }, "peerDependencies": { "webpack": "^2 || ^3 || ^4", - "html-webpack-plugin": "^2 || ^3" + "html-webpack-plugin": "^2 || ^3 || ^4" }, "devDependencies": { "codecov": "^3.1.0", diff --git a/plugin.js b/plugin.js index 4ba9296..71fef80 100644 --- a/plugin.js +++ b/plugin.js @@ -183,10 +183,20 @@ class CspHtmlWebpackPlugin { apply(compiler) { if (compiler.hooks) { compiler.hooks.compilation.tap('CspHtmlWebpackPlugin', compilation => { - compilation.hooks.htmlWebpackPluginAfterHtmlProcessing.tapAsync( - 'CspHtmlWebpackPlugin', - this.processCsp.bind(this) - ); + // HtmlWebPackPlugin 3.x + if (compilation.hooks.htmlWebpackPluginAfterHtmlProcessing) { + compilation.hooks.htmlWebpackPluginAfterHtmlProcessing.tapAsync( + 'CspHtmlWebpackPlugin', + this.processCsp.bind(this) + ); + } else { + // HtmlWebPackPlugin 4.x + const HtmlWebpackPlugin = require('html-webpack-plugin'); // eslint-disable-line global-require + HtmlWebpackPlugin.getHooks(compilation).beforeEmit.tapAsync( + 'CspHtmlWebpackPlugin', + this.processCsp.bind(this) + ); + } }); } else { compiler.plugin('compilation', compilation => {