import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; // BOLT_REACT_ONLY import vue from "@vitejs/plugin-vue"; // BOLT_VUE_ONLY import { svelte } from "@sveltejs/vite-plugin-svelte"; // BOLT_SVELTE_ONLY import {sveltePreprocess} from "svelte-preprocess"; // BOLT_SVELTE_ONLY import { cep, CepOptions, runAction } from "vite-cep-plugin"; import cepConfig from "./cep.config"; import path from "path"; import { extendscriptConfig } from "./vite.es.config"; const extensions = [".js", ".ts", ".tsx"]; const devDist = "dist"; const cepDist = "cep"; const src = path.resolve(__dirname, "src"); const root = path.resolve(src, "js"); const outDir = path.resolve(__dirname, "dist", cepDist); const debugReact = process.env.DEBUG_REACT === "true"; const isProduction = process.env.NODE_ENV === "production"; const isMetaPackage = process.env.ZIP_PACKAGE === "true"; const isPackage = process.env.ZXP_PACKAGE === "true" || isMetaPackage; const isServe = process.env.SERVE_PANEL === "true"; const action = process.env.BOLT_ACTION; let input: { [key: string]: string } = {}; cepConfig.panels.map((panel) => { input[panel.name] = path.resolve(root, panel.mainPath); }); const config: CepOptions = { cepConfig, isProduction, isPackage, isMetaPackage, isServe, debugReact, dir: `${__dirname}/${devDist}`, cepDist: cepDist, zxpOutput: `${__dirname}/${devDist}/zxp/${cepConfig.id}`, zipOutput: `${__dirname}/${devDist}/zip/${cepConfig.displayName}_${cepConfig.version}`, packages: cepConfig.installModules || [], }; if (action) runAction(config, action); // https://vitejs.dev/config/ export default defineConfig({ plugins: [ react(), // BOLT_REACT_ONLY vue(), // BOLT_VUE_ONLY svelte({ preprocess: sveltePreprocess({ typescript: true }) }), // BOLT_SVELTE_ONLY // svelte(), // BOLT_SVELTE_ONLY cep(config), ], resolve: { alias: [{ find: "@esTypes", replacement: path.resolve(__dirname, "src") }], }, root, clearScreen: false, server: { port: cepConfig.port, }, preview: { port: cepConfig.servePort, }, build: { sourcemap: isPackage ? cepConfig.zxp.sourceMap : cepConfig.build?.sourceMap, watch: { include: "src/jsx/**", }, // commonjsOptions: { // transformMixedEsModules: true, // }, rollupOptions: { input, output: { manualChunks: {}, // esModule: false, preserveModules: false, format: "cjs", entryFileNames: "assets/[name]-[hash].cjs", chunkFileNames: "assets/[name]-[hash].cjs", }, }, target: "chrome74", outDir, }, }); // rollup es3 build const outPathExtendscript = path.join("dist", cepDist, "jsx", "index.js"); extendscriptConfig( `src/jsx/index.ts`, outPathExtendscript, cepConfig, extensions, isProduction, isPackage, );