1import { defineConfig } from "vite";2import solidPlugin from "vite-plugin-solid";3import { crx } from "@crxjs/vite-plugin";4import { copyFileSync, mkdirSync, readFileSync } from "fs";5import { resolve } from "path";67const target = process.env.BUILD_TARGET || "chrome";8const manifestPath = target === "firefox" ? "./manifest.firefox.json" : "./manifest.json";9const manifest = JSON.parse(readFileSync(manifestPath, "utf-8"));10const passkeyE2E = process.env.PEACH_E2E_PASSKEYS === "1";11const outDir = target === "firefox" ? "dist-firefox" : "dist-chrome";121314151617const copyPdfJsWorker = {18 name: "copy-pdfjs-worker",19 closeBundle() {20 mkdirSync(outDir, { recursive: true });21 copyFileSync(22 resolve("node_modules/pdfjs-dist/build/pdf.worker.min.mjs"),23 resolve(outDir, "pdf.worker.min.mjs"),24 );25 },26};2728export default defineConfig({29 plugins: [30 solidPlugin(),31 crx({ manifest, browser: target === "firefox" ? "firefox" : "chrome" }),32 copyPdfJsWorker,33 ],34 base: "./",35 define: {36 __PEACH_E2E_PASSKEYS__: JSON.stringify(passkeyE2E),37 __PEACH_DEBUG__: false,38 },39 build: {40 outDir,41 42 43 44 45 emptyOutDir: false,46 47 48 49 50 51 52 53 54 modulePreload: false,55 target: "esnext",56 rollupOptions: {57 58 59 60 61 input:62 target === "firefox"63 ? undefined64 : { offscreen: resolve("src/background/offscreen.html") },65 output: {66 manualChunks(id) {67 if (id.includes("node_modules/solid-js")) return "vendor-solid";68 if (id.includes("node_modules/otpauth")) return "vendor-otp";69 if (id.includes("node_modules/papaparse")) return "vendor-parse";70 },71 },72 },73 },74});