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
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							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']
							 | 
						|
								  }
							 | 
						|
								});
							 | 
						|
								
							 |