@ant-design/tools
Version:
tools for ant design
41 lines • 1.13 kB
JavaScript
// We should use `stats` props of webpack. But it not work in v4.
export default class CleanUpStatsPlugin {
option;
constructor(option) {
this.option = {
MiniCSSExtractPlugin: true,
tsLoader: true,
...option
};
}
shouldPickStatChild(child) {
const {
MiniCSSExtractPlugin
} = this.option;
if (MiniCSSExtractPlugin && child.name.includes('mini-css-extract-plugin')) return false;
return true;
}
shouldPickWarning(message) {
const {
tsLoader
} = this.option;
if (tsLoader && /export .* was not found in .*/.test(message.details || String(message))) {
return false;
}
return true;
}
apply(compiler) {
compiler.hooks.done.tap('CleanUpStatsPlugin', stats => {
const {
children,
warnings
} = stats.compilation;
if (Array.isArray(children)) {
stats.compilation.children = children.filter(child => this.shouldPickStatChild(child));
}
if (Array.isArray(warnings)) {
stats.compilation.warnings = warnings.filter(message => this.shouldPickWarning(message));
}
});
}
}