| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  | import { defineConfig } from 'vite'; | 
					
						
							|  |  |  | import react from '@vitejs/plugin-react'; | 
					
						
							|  |  |  | import svgr from 'vite-plugin-svgr'; | 
					
						
							|  |  |  | import wasm from 'vite-plugin-wasm'; | 
					
						
							| 
									
										
										
										
											2024-04-08 20:09:15 +08:00
										 |  |  | import { visualizer } from 'rollup-plugin-visualizer'; | 
					
						
							|  |  |  | import usePluginImport from 'vite-plugin-importer'; | 
					
						
							|  |  |  | import { totalBundleSize } from 'vite-plugin-total-bundle-size'; | 
					
						
							| 
									
										
										
										
											2024-05-17 18:23:29 +08:00
										 |  |  | import path from 'path'; | 
					
						
							| 
									
										
										
										
											2024-06-03 11:20:45 +08:00
										 |  |  | import istanbul from 'vite-plugin-istanbul'; | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-05-17 18:23:29 +08:00
										 |  |  | const resourcesPath = path.resolve(__dirname, '../resources'); | 
					
						
							| 
									
										
										
										
											2024-04-08 20:09:15 +08:00
										 |  |  | const isDev = process.env.NODE_ENV === 'development'; | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  | // https://vitejs.dev/config/
 | 
					
						
							|  |  |  | export default defineConfig({ | 
					
						
							|  |  |  |   plugins: [ | 
					
						
							|  |  |  |     react(), | 
					
						
							|  |  |  |     wasm(), | 
					
						
							|  |  |  |     svgr({ | 
					
						
							|  |  |  |       svgrOptions: { | 
					
						
							|  |  |  |         prettier: false, | 
					
						
							|  |  |  |         plugins: ['@svgr/plugin-svgo', '@svgr/plugin-jsx'], | 
					
						
							|  |  |  |         icon: true, | 
					
						
							|  |  |  |         svgoConfig: { | 
					
						
							|  |  |  |           multipass: true, | 
					
						
							|  |  |  |           plugins: [ | 
					
						
							|  |  |  |             { | 
					
						
							|  |  |  |               name: 'preset-default', | 
					
						
							|  |  |  |               params: { | 
					
						
							|  |  |  |                 overrides: { | 
					
						
							|  |  |  |                   removeViewBox: false, | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |               }, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |           ], | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         svgProps: { | 
					
						
							|  |  |  |           role: 'img', | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |         replaceAttrValues: { | 
					
						
							|  |  |  |           '#333': 'currentColor', | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }), | 
					
						
							| 
									
										
										
										
											2024-06-03 11:20:45 +08:00
										 |  |  |     istanbul({ | 
					
						
							|  |  |  |       cypress: true, | 
					
						
							|  |  |  |       requireEnv: false, | 
					
						
							| 
									
										
										
										
											2024-06-06 17:48:58 +08:00
										 |  |  |       include: ['src/**/*'], | 
					
						
							|  |  |  |       exclude: [ | 
					
						
							|  |  |  |         '**/__tests__/**/*', | 
					
						
							|  |  |  |         'cypress/**/*', | 
					
						
							|  |  |  |         'node_modules/**/*', | 
					
						
							|  |  |  |         'src/application/services/tauri-services/**/*', | 
					
						
							|  |  |  |       ], | 
					
						
							| 
									
										
										
										
											2024-06-03 11:20:45 +08:00
										 |  |  |     }), | 
					
						
							| 
									
										
										
										
											2024-04-08 20:09:15 +08:00
										 |  |  |     usePluginImport({ | 
					
						
							|  |  |  |       libraryName: '@mui/icons-material', | 
					
						
							|  |  |  |       libraryDirectory: '', | 
					
						
							|  |  |  |       camel2DashComponentName: false, | 
					
						
							|  |  |  |       style: false, | 
					
						
							|  |  |  |     }), | 
					
						
							| 
									
										
										
										
											2024-04-29 14:32:14 +08:00
										 |  |  |     process.env.ANALYZE_MODE | 
					
						
							|  |  |  |       ? visualizer({ | 
					
						
							|  |  |  |           emitFile: true, | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       : undefined, | 
					
						
							|  |  |  |     process.env.ANALYZE_MODE | 
					
						
							|  |  |  |       ? totalBundleSize({ | 
					
						
							|  |  |  |           fileNameRegex: /\.(js|css)$/, | 
					
						
							|  |  |  |           calculateGzip: false, | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |       : undefined, | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  |   ], | 
					
						
							|  |  |  |   // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
 | 
					
						
							|  |  |  |   // prevent vite from obscuring rust errors
 | 
					
						
							|  |  |  |   clearScreen: false, | 
					
						
							|  |  |  |   // tauri expects a fixed port, fail if that port is not available
 | 
					
						
							|  |  |  |   server: { | 
					
						
							| 
									
										
										
										
											2024-04-29 14:32:14 +08:00
										 |  |  |     port: !!process.env.TAURI_PLATFORM ? 5173 : process.env.PORT ? parseInt(process.env.PORT) : 3000, | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  |     strictPort: true, | 
					
						
							|  |  |  |     watch: { | 
					
						
							| 
									
										
										
										
											2024-06-06 19:47:14 +08:00
										 |  |  |       ignored: ['node_modules'], | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2024-04-08 20:09:15 +08:00
										 |  |  |     cors: false, | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  |   }, | 
					
						
							|  |  |  |   envPrefix: ['AF', 'TAURI_'], | 
					
						
							| 
									
										
										
										
											2024-05-23 16:35:45 +08:00
										 |  |  |   esbuild: { | 
					
						
							| 
									
										
										
										
											2024-06-03 11:20:45 +08:00
										 |  |  |     pure: !isDev ? ['console.log', 'console.debug', 'console.info', 'console.trace'] : [], | 
					
						
							| 
									
										
										
										
											2024-05-23 16:35:45 +08:00
										 |  |  |   }, | 
					
						
							| 
									
										
										
										
											2024-04-29 14:32:14 +08:00
										 |  |  |   build: !!process.env.TAURI_PLATFORM | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  |     ? { | 
					
						
							| 
									
										
										
										
											2024-04-29 14:32:14 +08:00
										 |  |  |         // Tauri supports es2021
 | 
					
						
							|  |  |  |         target: process.env.TAURI_PLATFORM === 'windows' ? 'chrome105' : 'safari13', | 
					
						
							|  |  |  |         // don't minify for debug builds
 | 
					
						
							|  |  |  |         minify: !process.env.TAURI_DEBUG ? 'esbuild' : false, | 
					
						
							|  |  |  |         // produce sourcemaps for debug builds
 | 
					
						
							|  |  |  |         sourcemap: !!process.env.TAURI_DEBUG, | 
					
						
							|  |  |  |       } | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  |     : { | 
					
						
							| 
									
										
										
										
											2024-04-29 14:32:14 +08:00
										 |  |  |         target: `esnext`, | 
					
						
							|  |  |  |         reportCompressedSize: true, | 
					
						
							|  |  |  |         sourcemap: isDev, | 
					
						
							|  |  |  |         rollupOptions: !isDev | 
					
						
							|  |  |  |           ? { | 
					
						
							|  |  |  |               output: { | 
					
						
							|  |  |  |                 chunkFileNames: 'static/js/[name]-[hash].js', | 
					
						
							|  |  |  |                 entryFileNames: 'static/js/[name]-[hash].js', | 
					
						
							|  |  |  |                 assetFileNames: 'static/[ext]/[name]-[hash].[ext]', | 
					
						
							|  |  |  |                 manualChunks(id) { | 
					
						
							|  |  |  |                   if ( | 
					
						
							|  |  |  |                     id.includes('/react@') || | 
					
						
							|  |  |  |                     id.includes('/react-dom@') || | 
					
						
							|  |  |  |                     id.includes('/react-is@') || | 
					
						
							|  |  |  |                     id.includes('/yjs@') || | 
					
						
							|  |  |  |                     id.includes('/y-indexeddb@') || | 
					
						
							| 
									
										
										
										
											2024-05-17 18:23:29 +08:00
										 |  |  |                     id.includes('/redux') || | 
					
						
							|  |  |  |                     id.includes('/react-custom-scrollbars') | 
					
						
							| 
									
										
										
										
											2024-04-29 14:32:14 +08:00
										 |  |  |                   ) { | 
					
						
							|  |  |  |                     return 'common'; | 
					
						
							|  |  |  |                   } | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |               }, | 
					
						
							| 
									
										
										
										
											2024-04-08 20:09:15 +08:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2024-04-29 14:32:14 +08:00
										 |  |  |           : {}, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  |   resolve: { | 
					
						
							|  |  |  |     alias: [ | 
					
						
							|  |  |  |       { find: 'src/', replacement: `${__dirname}/src/` }, | 
					
						
							|  |  |  |       { find: '@/', replacement: `${__dirname}/src/` }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         find: '$client-services', | 
					
						
							| 
									
										
										
										
											2024-04-29 14:32:14 +08:00
										 |  |  |         replacement: !!process.env.TAURI_PLATFORM | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  |           ? `${__dirname}/src/application/services/tauri-services` | 
					
						
							|  |  |  |           : `${__dirname}/src/application/services/js-services`, | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2024-05-17 18:23:29 +08:00
										 |  |  |       { find: '$icons', replacement: `${resourcesPath}/flowy_icons/` }, | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  |     ], | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   optimizeDeps: { | 
					
						
							| 
									
										
										
										
											2024-06-06 17:48:58 +08:00
										 |  |  |     include: [ | 
					
						
							|  |  |  |       'react', | 
					
						
							|  |  |  |       'react-dom', | 
					
						
							|  |  |  |       '@mui/icons-material/ErrorOutline', | 
					
						
							|  |  |  |       '@mui/icons-material/CheckCircleOutline', | 
					
						
							|  |  |  |       '@mui/icons-material/FunctionsOutlined', | 
					
						
							| 
									
										
										
										
											2024-06-06 19:47:14 +08:00
										 |  |  |       'react-katex', | 
					
						
							|  |  |  |       // 'react-custom-scrollbars-2',
 | 
					
						
							|  |  |  |       // 'react-window',
 | 
					
						
							|  |  |  |       // 'react-virtualized-auto-sizer',
 | 
					
						
							| 
									
										
										
										
											2024-06-06 17:48:58 +08:00
										 |  |  |     ], | 
					
						
							| 
									
										
										
										
											2024-04-03 19:25:54 +08:00
										 |  |  |   }, | 
					
						
							|  |  |  | }); |