UNPKG

@roots/bud-extensions

Version:

bud.js core module

49 lines (42 loc) 1.33 kB
import type { Compiler, WebpackPluginInstance, } from '@roots/bud-framework/config' 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 implements WebpackPluginInstance { /** * {@link WebpackPluginInstance.apply} */ public override apply({hooks}: Compiler) { 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<string>() const add = (id: unknown) => 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) }, ), ) } }