@devup-ui/rsbuild-plugin
Version:
Zero Config, Zero FOUC, Zero Runtime, CSS in JS Preprocessor
2 lines (1 loc) • 1.92 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("node:fs"),s=require("node:fs/promises"),u=require("node:path"),t=require("@devup-ui/wasm");let m="";async function F(e){try{const r=d.existsSync(e.devupFile)?await s.readFile(e.devupFile,"utf-8"):void 0;if(r){t.registerTheme(JSON.parse(r)?.theme??{});const n=t.getThemeInterface(e.package,"CustomColors","DevupThemeTypography","DevupTheme");n&&await s.writeFile(u.join(e.distDir,"theme.d.ts"),n,"utf-8")}else t.registerTheme({})}catch(r){console.error(r),t.registerTheme({})}await Promise.all([d.existsSync(e.cssDir)?Promise.resolve():s.mkdir(e.cssDir,{recursive:!0}),e.singleCss?Promise.resolve():s.writeFile(u.join(e.cssDir,"devup-ui.css"),t.getCss(null,!1))])}const C=({include:e=[],package:r="@devup-ui/react",extractCss:n=!0,distDir:a="df",cssDir:l=u.resolve(a,"devup-ui"),devupFile:h="devup.json",debug:w=!1,singleCss:p=!1}={})=>({name:"devup-ui-rsbuild-plugin",async setup(c){t.setDebug(w),d.existsSync(a)||await s.mkdir(a,{recursive:!0}),await s.writeFile(u.join(a,".gitignore"),"*","utf-8"),await F({package:r,cssDir:l,devupFile:h,distDir:a,singleCss:p}),n&&(c.transform({test:l},()=>m),c.modifyRsbuildConfig(i=>(t.getDefaultTheme()&&(i.source??={},i.source.define={"process.env.DEVUP_UI_DEFAULT_THEME":JSON.stringify(t.getDefaultTheme()),...i.source.define}),i)),c.transform({test:/\.(tsx|ts|js|mjs|jsx)$/},async({code:i,resourcePath:o})=>{if(new RegExp(`node_modules(?!.*(${["@devup-ui",...e].join("|").replaceAll("/","[\\/\\\\_]")})([\\/\\\\.]|$))`).test(o))return i;const{code:y,css:v="",map:T,cssFile:g,updatedBaseStyle:j}=t.codeExtract(o,i,r,l,p,!1,!0),f=[];return j&&f.push(s.writeFile(u.join(l,"devup-ui.css"),t.getCss(null,!1),"utf-8")),g&&(m.length<v.length&&(m=v),f.push(s.writeFile(u.join(l,u.basename(g)),`/* ${o} ${Date.now()} */`,"utf-8"))),await Promise.all(f),{code:y,map:T}}))}});exports.DevupUI=C;