UNPKG

unplugin-lightningcss

Version:

Lightning CSS integration for Vite, Rollup, esbuild, Webpack, Vue CLI, and more.

60 lines (57 loc) 1.6 kB
import { transformCss, transformCssModule } from "./transform-ChRj8fQC.js"; import path from "node:path"; import { createUnplugin } from "unplugin"; //#region src/core/options.ts function resolveOption(options) { return { include: options.include || [/\.css$/], exclude: options.exclude || [/node_modules/], enforce: "enforce" in options ? options.enforce : "pre", options: options.options || {} }; } //#endregion //#region src/index.ts const plugin = createUnplugin((rawOptions = {}) => { const options = resolveOption(rawOptions); const transformedFiles = new Map(); const name = "unplugin-lightningcss"; return { name, enforce: options.enforce, resolveId(id, importer) { if (id.endsWith(".module_built.css")) return id; if (id.endsWith(".module.css")) return `${path.resolve(path.dirname(importer || ""), id)}?css_module`; }, transform: { filter: { id: { include: options.include, exclude: options.exclude } }, handler(code, id) { return transformCss(id, code, options.options); } }, load: { filter: { id: { include: [/\.module_built\.css$/, /\?css_module$/] } }, async handler(id) { if (id.endsWith(".module_built.css")) { const code$1 = transformedFiles.get(id); return { id, code: code$1 }; } const { code, map, exports, id: compiledId } = await transformCssModule(id, options.options); transformedFiles.set(compiledId, code); return { code: `import "${compiledId}";\n${exports}`, map }; } } }; }); var src_default = plugin; //#endregion export { src_default };