tigerstyle-life9/astro.config.mjs
Ryan Malloy e92b7f8700 Initial commit: TigerStyle Life9 v1.0.0
Because cats have 9 lives, but servers don't - so they need
backup-restore! Complete backup solution with S3/MinIO support.

- Full WordPress backup (files + database)
- S3 / MinIO / S3-compatible storage backends
- Scheduled automatic backups
- Disaster recovery / one-click restore
- Backup integrity validation
- Cat-themed admin interface

Includes build.sh and .distignore for WordPress-installable release ZIPs.
2026-05-27 14:32:00 -06:00

109 lines
2.9 KiB
JavaScript

import { defineConfig } from 'astro/config';
import alpinejs from '@astrojs/alpinejs';
// WordPress plugin specific configuration
export default defineConfig({
// Source and output directories
root: './src/astro',
publicDir: './src/astro/public',
outDir: './admin/assets/dist',
// Integrations
integrations: [
alpinejs()
],
// Build configuration for WordPress compatibility
build: {
// Generate assets that work with WordPress
format: 'file', // Generate .html files instead of directories
assets: 'assets', // Asset directory name
rollupOptions: {
input: {
// Admin page entries that we actually created
'admin-dashboard': './src/astro/pages/admin-dashboard.astro',
'backup': './src/astro/pages/backup.astro',
'restore': './src/astro/pages/restore.astro',
'settings': './src/astro/pages/settings.astro'
},
output: {
// WordPress-friendly asset naming
entryFileNames: 'js/[name]-[hash].js',
chunkFileNames: 'js/chunks/[name]-[hash].js',
assetFileNames: (assetInfo) => {
const extType = assetInfo.name.split('.').at(1);
if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) {
return `images/[name]-[hash][extname]`;
}
if (/css/i.test(extType)) {
return `css/[name]-[hash][extname]`;
}
return `assets/[name]-[hash][extname]`;
}
},
// Don't bundle WordPress globals
external: [
'jQuery',
'wp',
'ajaxurl',
'wpApiSettings'
]
},
// Enable source maps for development
sourcemap: process.env.NODE_ENV === 'development'
},
// Vite configuration
vite: {
// WordPress integration defines
define: {
'__WP_NONCE__': JSON.stringify('${wp_nonce}'),
'__WP_AJAX_URL__': JSON.stringify('${ajax_url}'),
'__WP_REST_URL__': JSON.stringify('${rest_url}'),
'__PLUGIN_URL__': JSON.stringify('${plugin_url}')
},
build: {
// CSS handling for WordPress
cssCodeSplit: true,
// Browser compatibility
target: ['es2018'],
rollupOptions: {
output: {
// Separate vendor chunks for better caching
manualChunks: {
'alpine': ['alpinejs'],
'vendor': ['@astrojs/alpinejs']
},
// Global variable mapping for externals
globals: {
'jQuery': 'jQuery',
'wp': 'wp',
'ajaxurl': 'ajaxurl',
'wpApiSettings': 'wpApiSettings'
}
}
}
},
// CSS preprocessing - simplified for now
css: {
// WordPress-compatible CSS processing
devSourcemap: true
},
// Development server configuration
server: {
port: 4321,
host: true,
open: false // Don't auto-open browser
}
},
});