UNPKG

unplugin-lightningcss

Version:

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

57 lines (54 loc) 1.63 kB
import { n as transformCssModule, t as transformCss } from "./transform-E3Hb0W6s.mjs"; 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 || {}, asString: options.asString || false }; } //#endregion //#region src/index.ts const plugin = createUnplugin((rawOptions = {}) => { const options = resolveOption(rawOptions); const transformedFiles = /* @__PURE__ */ new Map(); return { name: "unplugin-lightningcss", 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, options.asString); } }, load: { filter: { id: { include: [/\.module_built\.css$/, /\?css_module$/] } }, async handler(id) { if (id.endsWith(".module_built.css")) return { id, code: transformedFiles.get(id) }; 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 as t };