45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { defineConfig } from 'vite'
 | |
| import { nodePolyfills } from 'vite-plugin-node-polyfills'
 | |
| import { configDefaults } from 'vitest/config'
 | |
| import react from '@vitejs/plugin-react'
 | |
| import { crx } from '@crxjs/vite-plugin'
 | |
| import manifest from './manifest.json'
 | |
| 
 | |
| const viteManifestHackIssue846: Plugin & {
 | |
|     renderCrxManifest: (manifest: any, bundle: any) => void
 | |
| } = {
 | |
|     // Workaround from https://github.com/crxjs/chrome-extension-tools/issues/846#issuecomment-1861880919.
 | |
|     name: 'manifestHackIssue846',
 | |
|     renderCrxManifest(_manifest, bundle) {
 | |
|         bundle['manifest.json'] = bundle['.vite/manifest.json']
 | |
|         bundle['manifest.json'].fileName = 'manifest.json'
 | |
|         delete bundle['.vite/manifest.json']
 | |
|     },
 | |
| }
 | |
| 
 | |
| export default defineConfig(() => {
 | |
|     return {
 | |
|         build: {
 | |
|             outDir: 'build',
 | |
|         },
 | |
|         plugins: [
 | |
|             react(),
 | |
|             viteManifestHackIssue846,
 | |
|             crx({ manifest }),
 | |
|             nodePolyfills(),
 | |
|         ],
 | |
|         resolve: {
 | |
|             alias: {
 | |
|                 // Replaces node-fetch in kittycad.ts, cross-fetch wouldn't work
 | |
|                 'node-fetch': 'isomorphic-fetch',
 | |
|             },
 | |
|         },
 | |
|         test: {
 | |
|             globals: true,
 | |
|             environment: 'happy-dom',
 | |
|             setupFiles: 'src/setupTests.ts',
 | |
|             exclude: [...configDefaults.exclude, 'tests/*'],
 | |
|         },
 | |
|     }
 | |
| })
 |