chat-with-ai/astro.config.mjs

60 lines
1.8 KiB
JavaScript

import { defineConfig } from 'astro/config';
import react from "@astrojs/react";
import tailwind from "@astrojs/tailwind";
import { chunkSplitPlugin } from 'vite-plugin-chunk-split';
// https://astro.build/config
export default defineConfig({
output: 'static',
// Simplified React integration - fully client-side
integrations: [
react({
include: ['**/*.tsx'],
ssr: false, // Disable SSR completely
experimentalReactChildren: false
}),
tailwind()
],
vite: {
server: {
allowedHosts: ['chat-with-ai.s38.siliconpin.com','chat-with-ai.s38.siliconpin.com','chat.siliconpin.com','aimodel.beanstalkedu.com']
},
preview: {
allowedHosts: ['chat-with-ai.s38.siliconpin.com','chat-with-ai.s38.siliconpin.com','chat.siliconpin.com','aimodel.beanstalkedu.com']
},
// Simplified plugins - focus on critical functionality
plugins: [
chunkSplitPlugin({
strategy: 'default',
customSplitting: {
'react-vendor': ['react', 'react-dom']
}
})
],
// Avoid hydration issues with external packages
ssr: {
noExternal: ['@radix-ui/*', 'class-variance-authority']
},
build: {
chunkSizeWarningLimit: 5000,
// Simplified bundling - focus on React
rollupOptions: {
output: {
manualChunks: {
'react-vendor': ['react', 'react-dom']
}
}
},
minify: 'esbuild', // Use esbuild for faster and simpler minification
},
// Deduplicate React packages to prevent multiple instances
resolve: {
dedupe: ['react', 'react-dom']
},
// Make sure React is optimized properly
optimizeDeps: {
include: ['react', 'react-dom', '@radix-ui/react-dialog', '@radix-ui/react-dropdown-menu']
}
}
});