UNPKG

transform-to-unocss

Version:

🚀 Effortlessly transform CSS, inline styles, and preprocessors (Sass/Less/Stylus) to UnoCSS with smart conflict resolution and debug support

125 lines (123 loc) • 5.01 kB
"use strict"; const require_transformCode = require('./transformCode-Q6ywJZ6Q.cjs'); const __rollup_pluginutils = require_transformCode.__toESM(require("@rollup/pluginutils")); const unplugin = require_transformCode.__toESM(require("unplugin")); //#region src/unplugin.ts const unplugin$1 = (0, unplugin.createUnplugin)((options) => { const defaultExclude = ["**/node_modules/**"]; const userExclude = (options === null || options === void 0 ? void 0 : options.exclude) ? Array.isArray(options.exclude) ? options.exclude : [options.exclude] : []; const finalExclude = [...defaultExclude, ...userExclude]; const filter = (0, __rollup_pluginutils.createFilter)(options === null || options === void 0 ? void 0 : options.include, finalExclude); let globalCss = null; let resolveAlias = null; return [{ name: "unplugin-transform-to-unocss", enforce: "pre", async configResolved(config) { var _config$css, _config$resolve; globalCss = (_config$css = config.css) === null || _config$css === void 0 ? void 0 : _config$css.preprocessorOptions; resolveAlias = ((_config$resolve = config.resolve) === null || _config$resolve === void 0 ? void 0 : _config$resolve.alias) ?? null; }, transformInclude(id) { if (id.includes("node_modules")) return false; return filter(id); }, async transform(code, id) { let suffix; if (id.endsWith(".vue")) suffix = "vue"; else if (id.endsWith("lang.tsx")) {} else if (id.endsWith("lang.jsx")) {} else if (id.endsWith(".tsx")) suffix = "tsx"; else if (id.endsWith(".jsx")) suffix = "jsx"; if (!suffix) return code; let transformedCode = code; try { if (suffix === "vue" && typeof this.resolve === "function") { const styleBlockRegex = /<style\b[^>]*>([\s\S]*?)<\/style>/g; const blocks = []; for (const m of code.matchAll(styleBlockRegex)) { if (!m.index) continue; blocks.push({ full: m[0], content: m[1], start: m.index, end: m.index + m[0].length }); } if (blocks.length) { const replacements = []; for (const b of blocks) { const content = b.content; const impRegex = /@(import|use|forward)\s+(?:url\()?['"]([^'"]+)['"]\)?/g; const matches = []; for (const im of content.matchAll(impRegex)) { if (typeof im.index !== "number") continue; matches.push({ index: im.index, length: im[0].length, path: im[2] }); } if (!matches.length) continue; let newContent = ""; let lastIndex = 0; for (const m of matches) { const original = content.slice(m.index, m.index + m.length); const before = content.slice(lastIndex, m.index); lastIndex = m.index + m.length; let resolvedId = null; try { const r = await this.resolve(m.path, id); if (r && r.id && !r.id.startsWith("\0")) resolvedId = r.id; } catch (e) {} if (resolvedId) { const replaced = original.replace(m.path, resolvedId); newContent += before + replaced; } else newContent += before + original; } newContent += content.slice(lastIndex); const newFull = b.full.replace(b.content, newContent); replacements.push({ start: b.start, end: b.end, text: newFull }); } transformedCode = code; for (let i = replacements.length - 1; i >= 0; i--) { const r = replacements[i]; transformedCode = transformedCode.slice(0, r.start) + r.text + transformedCode.slice(r.end); } } } } catch (e) { if (globalCss && globalCss.debug) console.warn("[transform-to-unocss] resolver error", e); } return await require_transformCode.transformCode(transformedCode, { filepath: id, type: suffix, globalCss, resolveAlias }); } }]; }); const viteTransformToUnocss = unplugin$1.vite; const rollupTransformToUnocss = unplugin$1.rollup; const webpackTransformToUnocss = unplugin$1.webpack; const esbuildTransformToUnocss = unplugin$1.esbuild; const rspackTransformToUnocss = unplugin$1.rspack; const farmTransformToUnocss = unplugin$1.farm; const rolldownTransformToUnocss = unplugin$1.rolldown; //#endregion exports.esbuildTransformToUnocss = esbuildTransformToUnocss exports.farmTransformToUnocss = farmTransformToUnocss exports.rolldownTransformToUnocss = rolldownTransformToUnocss exports.rollupTransformToUnocss = rollupTransformToUnocss exports.rspackTransformToUnocss = rspackTransformToUnocss exports.transformAstro = require_transformCode.transformAstro exports.transformCode = require_transformCode.transformCode exports.transformHtml = require_transformCode.transformHtml exports.transformJsx = require_transformCode.transformJsx exports.transformSvelte = require_transformCode.transformSvelte exports.transformVue = require_transformCode.transformVue exports.viteTransformToUnocss = viteTransformToUnocss exports.webpackTransformToUnocss = webpackTransformToUnocss