vite.config.mobile.ts

1.3 KB · raw

1import { readFileSync } from "fs";2import { defineConfig } from "vite";3import solidPlugin from "vite-plugin-solid";45const appManifest = JSON.parse(readFileSync("manifest.json", "utf-8"));67export default defineConfig({8  plugins: [9    solidPlugin(),10    {11      name: "mobile-body-class",12      transformIndexHtml(html) {13        return html.replace("<body>", '<body class="peach-mobile">');14      },15    },16  ],17  build: {18    outDir: "dist-mobile",19    emptyOutDir: false,20    target: "esnext",21    rollupOptions: {22      input: "src/popup/index.html",23      plugins: [24        {25          // Mobile has no extension background, but shared background modules26          // still use chrome.storage/tabs/alarms. Import the Capacitor-backed27          // shim before the popup app graph can load those modules.28          apply: "build",29          enforce: "pre",30          transform(code, id) {31            if (id.includes("src/popup/index")) {32              return {33                code: `import "../shared/chrome-shim";\n${code}`,34                map: null,35              };36            }37            return null;38          },39        },40      ],41    },42  },43  define: {44    "import.meta.env.PEACH_PLATFORM": JSON.stringify("android"),45    __PEACH_E2E_PASSKEYS__: JSON.stringify(false),46    __APP_VERSION__: JSON.stringify(appManifest.version),47  },48});