vuecssuiant-designantdreactantantd-vueenterprisefrontendui-designvue-antdvue-antd-uivue3vuecomponent
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
38 lines
1.1 KiB
// We should use `stats` props of webpack. But it not work in v4. |
|
class CleanUpStatsPlugin { |
|
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)) { |
|
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)); |
|
} |
|
}); |
|
} |
|
} |
|
|
|
module.exports = CleanUpStatsPlugin;
|
|
|