@atomazing-org/vite-config
Version:
A library providing a vite configuration with including PWA and MF supports.
2 lines • 3.38 kB
JavaScript
import{defineConfig as C}from"vite";import{federation as j}from"@module-federation/vite";import y from"@vitejs/plugin-react";import{VitePWA as S}from"vite-plugin-pwa";import{qrcode as v}from"vite-plugin-qrcode";var b={globPatterns:["assets/**/*.{js,css}","index.html","favicon.svg","manifest.webmanifest"],globIgnores:["**/@mui/icons-material/**","**/node_modules/**"],skipWaiting:!0,clientsClaim:!0,navigateFallback:"/index.html",runtimeCaching:[{urlPattern:({url:e})=>e.href.startsWith("https://"),handler:"NetworkFirst",options:{cacheName:"jsonplaceholder",networkTimeoutSeconds:5,expiration:{maxEntries:50,maxAgeSeconds:604800},cacheableResponse:{statuses:[0,200]}}},{urlPattern:({request:e})=>e.destination==="script"||e.destination==="style"||e.destination==="worker",handler:"CacheFirst",options:{cacheName:"app-assets",expiration:{maxEntries:60,maxAgeSeconds:2592e3},cacheableResponse:{statuses:[0,200]}}},{urlPattern:({request:e})=>e.mode==="navigate",handler:"NetworkFirst",options:{cacheName:"documents",networkTimeoutSeconds:10,expiration:{maxEntries:50,maxAgeSeconds:2592e3}}},{urlPattern:({request:e})=>e.destination==="image",handler:"CacheFirst",options:{cacheName:"images",expiration:{maxEntries:60,maxAgeSeconds:2592e3},cacheableResponse:{statuses:[0,200]}}}]},u=b;import F from"@vitejs/plugin-basic-ssl";import O from"vite-tsconfig-paths";import A from"vite-plugin-checker";import h from"fs";import x from"path";import{transform as w}from"esbuild";import k from"fs/promises";var P=e=>{let o=process.cwd(),t=x.join(o,e);return h.existsSync(t)?t:null},c=async e=>{let o=P(e);if(!o)return null;try{let t=await k.readFile(o,"utf-8"),{code:i}=await w(t,{loader:"ts",format:"esm",target:"esnext"});return(await import(`data:text/javascript;base64,${Buffer.from(i).toString("base64")}`)).default}catch(t){return console.error(`Error on ${e} loading.`,t),null}};import{lingui as E}from"@lingui/vite-plugin";export*from"vite-plugin-pwa";export*from"workbox-build";export*from"workbox-window";async function X({enableDevPwa:e=!1,enableHttps:o=!1,enableI8n:t=!1,moduleFederationOptions:i,...m}){let r=await c("manifest.ts"),a=await c("workbox.config.ts"),{plugins:l,build:d,...f}=m,s=[],p=["@emotion/babel-plugin"];return r&&(console.log("\u{1F527} Detected manifest.ts"),console.log(a?"\u{1F527} Detected workbox.config.ts":"\u{1F527} Default workbox.config.ts should be used"),s.push(S({devOptions:{enabled:e,type:"module"},manifest:r,registerType:"autoUpdate",workbox:a||u,includeAssets:["**/*","sw.js"]})),e&&s.push(v({filter:n=>n.startsWith("http://192.168.0.")||n.startsWith("https://192.168.0.")})),console.log("\u{1F6E0}\uFE0F vite-plugin-pwa is connected")),i&&(s.push(j({filename:"remoteEntry.js",...i})),console.log("\u{1F6E0}\uFE0F @module-federation/vite is connected")),o&&(s.push(F()),console.log("\u{1F6E0}\uFE0F @vitejs/plugin-basic-ssl is connected ")),t&&(p.push("@lingui/babel-plugin-lingui-macro"),s.push(E()),console.log("\u{1F6E0}\uFE0F @lingui/vite-plugin is connected ")),C({test:{globals:!0},plugins:[...s,y({jsxImportSource:"@emotion/react",babel:{plugins:p}}),O(),A({typescript:!0}),...l!=null?l:[]],resolve:{extensions:[".tsx",".ts",".jsx",".js",".json",".mjs",".mts"]},build:{rollupOptions:{onwarn(n,g){n.code==="SOURCEMAP_ERROR"||n.message.includes("PURE")||g(n)}},...d},...f})}export{X as createViteConfig};
//# sourceMappingURL=index.mjs.map