GitHub iconTwitter icon

📦 webpack

class DeleteEmptyAssetsPlugin {
  trash: string[];
  apply(compiler: Compiler) {
    compiler.hooks.thisCompilation.tap('DeleteEmptyAssetsPlugin', compilation => {
      compilation.hooks.afterOptimizeAssets.tap('DeleteEmptyAssetsPlugin', assets => {
        const emptyAssets = Object.keys(assets).filter(filename => {
          const asset = assets[filename];
          return asset.size() === 0;
        });
        if (emptyAssets.length !== 0) {
          console.log('Found empty chunks, try to delete it!');
        }
        emptyAssets.forEach(asset => delete compilation.assets[asset]);
      });
    });
  }
}

Only ignore `.css`, `*.module.css` will still process by `bundler` to generate `.json` file.

webpack

{
  test: CSS_RE,
  exclude: CSS_MODULES_RE,
  sideEffects: true,
  use: [
    {
      loader: require.resolve('@ies/pace-kit/ignore-loader.cjs'),
    },
  ],
}