You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

112 lines
2.5 KiB

/**
* Vite Configuration for TimeSafari Daily Notification Plugin
*
* Integrates with TimeSafari PWA's Vite build system for optimal
* tree-shaking, SSR safety, and platform-specific builds.
*
* @author Matthew Raymer
* @version 1.0.0
*/
import { defineConfig } from 'vite';
import { resolve } from 'path';
export default defineConfig({
// Plugin-specific configuration
plugins: [],
// Build configuration
build: {
// Library mode for plugin distribution
lib: {
entry: resolve(__dirname, 'src/index.ts'),
name: 'TimeSafariDailyNotification',
fileName: (format) => `timesafari-daily-notification.${format}.js`,
formats: ['es', 'cjs', 'umd']
},
// Rollup options for fine-grained control
rollupOptions: {
// External dependencies (not bundled)
external: [
'@capacitor/core',
'@capacitor/android',
'@capacitor/ios',
'@capacitor/web'
],
// Output configuration
output: {
// Global variable name for UMD build
globals: {
'@capacitor/core': 'CapacitorCore',
'@capacitor/android': 'CapacitorAndroid',
'@capacitor/ios': 'CapacitorIOS',
'@capacitor/web': 'CapacitorWeb'
},
// Asset file names
assetFileNames: (assetInfo) => {
if (assetInfo.name === 'style.css') return 'timesafari-daily-notification.css';
return assetInfo.name || 'asset';
}
}
},
// Source maps for debugging
sourcemap: true,
// Minification
minify: 'terser',
// Target environment
target: 'es2015'
},
// Development server configuration
server: {
port: 3000,
host: true,
cors: true
},
// Preview server configuration
preview: {
port: 3001,
host: true,
cors: true
},
// Define global constants
define: {
__PLUGIN_VERSION__: JSON.stringify(process.env.npm_package_version || '1.0.0'),
__BUILD_TIME__: JSON.stringify(new Date().toISOString())
},
// Resolve configuration
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
'@examples': resolve(__dirname, 'examples'),
'@tests': resolve(__dirname, 'src/__tests__')
}
},
// Optimize dependencies
optimizeDeps: {
include: [
'@capacitor/core'
],
exclude: [
'@capacitor/android',
'@capacitor/ios'
]
},
// Test configuration
test: {
globals: true,
environment: 'jsdom',
setupFiles: ['./tests/setup.ts']
}
});