@devup-ui/vite-plugin
Version:
Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor
2 lines (1 loc) • 3.05 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("node:fs"),c=require("node:fs/promises"),e=require("node:path"),u=require("@devup-ui/wasm");function y(r){return r.endsWith("devup-ui.css")?null:parseInt(r.split("devup-ui-")[1].split(".")[0])}async function F(r){try{const a=m.existsSync(r.devupFile)?await c.readFile(r.devupFile,"utf-8"):void 0;if(a){u.registerTheme(JSON.parse(a)?.theme??{});const o=u.getThemeInterface(r.package,"CustomColors","DevupThemeTypography","DevupTheme");o&&await c.writeFile(e.join(r.distDir,"theme.d.ts"),o,"utf-8")}else u.registerTheme({})}catch(a){console.error(a),u.registerTheme({})}await Promise.all([m.existsSync(r.cssDir)?Promise.resolve():c.mkdir(r.cssDir,{recursive:!0}),r.singleCss?Promise.resolve():c.writeFile(e.join(r.cssDir,"devup-ui.css"),u.getCss(null,!1))])}function _({package:r="@devup-ui/react",devupFile:a="devup.json",distDir:o="df",cssDir:l=e.resolve(o,"devup-ui"),extractCss:d=!0,debug:S=!1,include:v=[],singleCss:g=!1}={}){u.setDebug(S);const f=new Map;return{name:"devup-ui",async configResolved(){m.existsSync(o)||await c.mkdir(o,{recursive:!0}),await c.writeFile(e.join(o,".gitignore"),"*","utf-8"),await F({package:r,cssDir:l,devupFile:a,distDir:o,singleCss:g})},config(){const n=u.getDefaultTheme(),t={};n&&(t["process.env.DEVUP_UI_DEFAULT_THEME"]=JSON.stringify(n));const s={server:{watch:{ignored:[`!${a}`]}},define:t,optimizeDeps:{exclude:[...v,"@devup-ui/components"]},ssr:{noExternal:[...v,/@devup-ui/]}};return d&&(s.build={rollupOptions:{output:{manualChunks(i){const p=e.basename(i).split("?")[0];if(/devup-ui(-\d+)?\.css$/.test(p))return p}}}}),s},apply(){return!0},async watchChange(n){if(e.resolve(n)===e.resolve(a)&&m.existsSync(a))try{await F({package:r,cssDir:l,devupFile:a,distDir:o,singleCss:g})}catch(t){console.error(t)}},resolveId(n,t){const s=e.basename(n).split("?")[0];if(/devup-ui(-\d+)?\.css$/.test(s)&&e.resolve(t?e.join(e.dirname(t),n):n)===e.resolve(e.join(l,s)))return e.join(l,`${s}?t=${Date.now().toString()+(f.get(y(s))?.length??0)}`)},load(n){const t=e.basename(n).split("?")[0];if(/devup-ui(-\d+)?\.css$/.test(t)){const s=y(t),i=u.getCss(s,!1);return f.set(s,i),i}},enforce:"pre",async transform(n,t){if(!d)return;const s=t.split("?")[0];if(!/\.(tsx|ts|js|mjs|jsx)$/i.test(s)||new RegExp(`node_modules(?!.*(${["@devup-ui",...v].join("|").replaceAll("/","[\\/\\\\_]")})([\\/\\\\.]|$))`).test(s))return;let i=e.relative(e.dirname(t),l).replaceAll("\\","/");i.startsWith("./")||(i=`./${i}`);const{code:p,css:j="",map:N,cssFile:h,updatedBaseStyle:x}=u.codeExtract(s,n,r,i,g,!0,!1),w=[];if(x&&w.push(c.writeFile(e.join(l,"devup-ui.css"),u.getCss(null,!1),"utf-8")),h){const $=y(h),T=f.get($);T&&T.length<j.length&&f.set($,j),w.push(c.writeFile(e.join(l,e.basename(h)),`/* ${t} ${Date.now()} */`,"utf-8"))}return await Promise.all(w),{code:p,map:N}},async generateBundle(n,t){if(!d)return;const s=Object.keys(t).find(i=>t[i].name==="devup-ui.css");s&&"source"in t[s]&&(t[s].source=f.get(null))}}}exports.DevupUI=_;