UNPKG

@roots/bud-extensions

Version:

bud.js core module

28 lines (27 loc) 1.15 kB
import { Extension } from '@roots/bud-framework/extension'; import isString from '@roots/bud-support/isString'; /** * Remove empty modules from the compilation */ export default class FixStyleOnlyEntrypoints extends Extension { /** * {@link WebpackPluginInstance.apply} */ apply({ hooks }) { hooks.thisCompilation.tap(this.constructor.name, compilation => compilation.hooks.chunkAsset.tap(this.constructor.name, (chunk, file) => { if (!/\.(js|mjs)$/.test(file)) return; const modules = new Set(); const add = (id) => id && isString(id) && modules.add(id); const chunkModules = compilation.chunkGraph.getChunkEntryModulesIterable(chunk); for (const module of chunkModules) { add(module.identifier()); for (const resource of module.dependencies) add(resource.getResourceIdentifier()); } modules.size > 1 && Array.from(modules).every(ident => /\.(css|scss|sass)((-|\?).*)?$/.test(ident)) && compilation.deleteAsset(file); })); } }