riseup-squad18/MEDICONNECT 2/vite.config.ts
2025-10-07 14:53:47 -03:00

85 lines
2.1 KiB
TypeScript

import react from "@vitejs/plugin-react";
import { defineConfig, UserConfig } from "vite";
import { copyFileSync, mkdirSync, existsSync } from "fs";
import { join } from "path";
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
let build: UserConfig["build"],
esbuild: UserConfig["esbuild"],
define: UserConfig["define"];
if (mode === "development") {
build = {
minify: false,
};
esbuild = {
jsxDev: true,
};
define = {
"process.env.NODE_ENV": '"development"',
__DEV__: "true",
};
} else {
// Modo produção - copiar arquivos de dados
build = {
...build,
// Hook após o build para copiar arquivos
rollupOptions: {
output: {
assetFileNames: (assetInfo) => {
// Manter nomes originais para assets
if (assetInfo.name?.endsWith(".json")) {
return "data/[name][extname]";
}
return "assets/[name]-[hash][extname]";
},
},
},
};
}
return {
plugins: [
react(),
// Plugin customizado para copiar arquivos de dados
{
name: "copy-data-files",
closeBundle() {
if (mode === "production") {
const dataDir = join(__dirname, "dist", "src", "data");
if (!existsSync(dataDir)) {
mkdirSync(dataDir, { recursive: true });
}
const sourceFile = join(
__dirname,
"src",
"data",
"consultas-demo.json"
);
const destFile = join(dataDir, "consultas-demo.json");
if (existsSync(sourceFile)) {
copyFileSync(sourceFile, destFile);
console.log(
"✅ Arquivo consultas-demo.json copiado para dist/src/data/"
);
}
}
},
},
],
build,
esbuild,
define,
optimizeDeps: {
exclude: ["lucide-react"],
},
// Incluir arquivos JSON e PNG (case insensitive) como assets
assetsInclude: ["**/*.json", "**/*.png", "**/*.PNG"],
};
});