UNPKG

vite-plugin-purgecss-updated-v5

Version:

Updated vite plugin for removing unused CSS from generated bundles with PurgeCSS for Vite 5 peerDependencies.

55 lines (54 loc) 1.45 kB
// src/index.ts import { extname } from "path"; import { PurgeCSS } from "purgecss"; var cssRegExp = /^.*(\.module)?\.css(\?.*)?$/i; function purgeCssPlugin(opts) { return { name: "vite-plugin-purgecss", enforce: "post", async generateBundle(_, bundle) { let content = []; let css = []; if (opts != null) { const { content: optsContent, css: optsCss, ...rest } = opts; content = optsContent ?? content; css = optsCss ?? css; opts = rest; } const outputs = {}; for (const id in bundle) { const file = bundle[id]; const isChunk = file.type === "chunk"; if (isChunk || !cssRegExp.test(file.fileName)) { content.push({ extension: extname(file.fileName).slice(1), raw: isChunk ? file.code : sourceString(file.source) }); continue; } css.push({ name: id, raw: sourceString(file.source) }); outputs[id] = file; } const results = await new PurgeCSS().purge({ ...opts, content, css }); for (const result of results) { outputs[result.file].source = result.css; } } }; } function sourceString(source) { if (typeof source === "string") { return source; } return new TextDecoder().decode(source); } var index_default = purgeCssPlugin; export { cssRegExp, index_default as default, sourceString };