Initial commit
This commit is contained in:
89
vite.config.js
Normal file
89
vite.config.js
Normal file
@@ -0,0 +1,89 @@
|
||||
import { defineConfig } from 'vite'
|
||||
import react from '@vitejs/plugin-react'
|
||||
import { copyFileSync, mkdirSync, readdirSync, existsSync, statSync } from 'fs'
|
||||
import { execSync } from 'child_process'
|
||||
import { resolve, join } from 'path'
|
||||
|
||||
function copyFolderSync(src, dest) {
|
||||
mkdirSync(dest, { recursive: true })
|
||||
const entries = readdirSync(src)
|
||||
|
||||
for (const entry of entries) {
|
||||
const srcPath = join(src, entry)
|
||||
const destPath = join(dest, entry)
|
||||
|
||||
if (statSync(srcPath).isDirectory()) {
|
||||
copyFolderSync(srcPath, destPath)
|
||||
} else {
|
||||
copyFileSync(srcPath, destPath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function copyFoldersPlugin() {
|
||||
return {
|
||||
name: 'copy-folders-plugin',
|
||||
closeBundle() {
|
||||
const outDir = resolve(__dirname, 'dist')
|
||||
const apiSrc = resolve(__dirname, 'api')
|
||||
const apiDest = resolve(outDir, 'api')
|
||||
const vendorSrc = resolve(__dirname, 'vendor')
|
||||
const vendorDest = resolve(outDir, 'vendor')
|
||||
|
||||
try {
|
||||
if (existsSync(apiSrc)) {
|
||||
copyFolderSync(apiSrc, apiDest)
|
||||
console.log('✓ API folder copied to dist/api')
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Error copying API folder:', err)
|
||||
}
|
||||
|
||||
try {
|
||||
if (existsSync(vendorSrc)) {
|
||||
execSync('composer install --no-dev --quiet', { cwd: resolve(__dirname) })
|
||||
copyFolderSync(vendorSrc, vendorDest)
|
||||
execSync('composer install --quiet', { cwd: resolve(__dirname) })
|
||||
console.log('✓ Vendor folder copied to dist/vendor (production only)')
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Error copying vendor folder:', err)
|
||||
execSync('composer install --quiet', { cwd: resolve(__dirname) })
|
||||
}
|
||||
|
||||
console.log('✓ Build complete!')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [react(), copyFoldersPlugin()],
|
||||
build: {
|
||||
outDir: 'dist',
|
||||
emptyOutDir: true,
|
||||
sourcemap: false,
|
||||
target: 'es2020',
|
||||
rollupOptions: {
|
||||
output: {
|
||||
manualChunks: {
|
||||
'vendor-react': ['react', 'react-dom', 'react-router-dom'],
|
||||
'vendor-animation': ['framer-motion'],
|
||||
'vendor-utils': ['date-fns', 'dompurify']
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
server: {
|
||||
port: 3000,
|
||||
host: true,
|
||||
proxy: {
|
||||
'/api': {
|
||||
target: 'http://localhost:80',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
cookieDomainRewrite: 'localhost',
|
||||
cookiePathRewrite: '/'
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user