-
Notifications
You must be signed in to change notification settings - Fork 14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
webpack5 hook was not found #20
Comments
Did you ever solve this |
This is my modified code, which can be used directly. var assert = require('assert');
const HtmlWebpackPlugin = require('html-webpack-plugin');
function HtmlWebpackExcludeAssetsPlugin (options) {
assert.equal(options, undefined, 'The HtmlWebpackExcludeAssetsPlugin does not accept any options');
this.PluginName = 'HtmlWebpackExcludeAssetsPlugin';
}
HtmlWebpackExcludeAssetsPlugin.prototype.apply = function (compiler) {
compiler.hooks.compilation.tap(this.PluginName, this.applyCompilation.bind(this));
};
HtmlWebpackExcludeAssetsPlugin.prototype.applyCompilation = function applyCompilation (compilation) {
var self = this;
HtmlWebpackPlugin.getHooks(compilation).alterAssetTagGroups.tapAsync(this.PluginName, registerCb)
function registerCb (htmlPluginData, callback) {
var excludeAssets = htmlPluginData.plugin.options.excludeAssets;
// Skip if the plugin configuration didn't set `excludeAssets`
if (!excludeAssets) {
if (callback) {
return callback(null, htmlPluginData);
} else {
return Promise.resolve(htmlPluginData);
}
}
if (excludeAssets.constructor !== Array) {
excludeAssets = [excludeAssets];
}
// Skip invalid RegExp patterns
var excludePatterns = excludeAssets.filter(function (excludePattern) {
return excludePattern.constructor === RegExp;
});
var result = self.processAssets(excludePatterns, htmlPluginData);
if (callback) {
callback(null, result);
} else {
return Promise.resolve(result);
}
}
};
HtmlWebpackExcludeAssetsPlugin.prototype.isExcluded = function (excludePatterns, assetPath) {
return excludePatterns.filter(function (excludePattern) {
return excludePattern.test(assetPath);
}).length > 0;
};
HtmlWebpackExcludeAssetsPlugin.prototype.processAssets = function (excludePatterns, pluginData) {
var self = this;
var body = [];
var head = [];
pluginData.headTags.forEach(function (tag) {
if (!tag.attributes || !self.isExcluded(excludePatterns, tag.attributes.src || tag.attributes.href)) {
head.push(tag);
}
});
pluginData.bodyTags.forEach(function (tag) {
if (!tag.attributes || !self.isExcluded(excludePatterns, tag.attributes.src || tag.attributes.href)) {
body.push(tag);
}
});
return { headTags: head, bodyTags: body, plugin: pluginData.plugin, outputName: pluginData.outputName };
};
module.exports = HtmlWebpackExcludeAssetsPlugin; |
it doesn't solve the problem for me |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello, I upgraded webpack to v5, use this plug-in but find some errors.
HtmlWebpackExcludeAssetsPluginError: The expected HtmlWebpackPlugin hook was not found! Ensure HtmlWebpackPlugin is installed and was initialized before this plugin.
It seems that hook has been deleted after webpack5 upgrade,are there plans to update this plug-in to support webpack 5
The text was updated successfully, but these errors were encountered: