39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
// 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 } = 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;
 |