| import react from '@vitejs/plugin-react-swc'; |
| import { resolve } from 'node:path'; |
| import * as process from 'node:process'; |
| import { defineConfig } from 'vite'; |
|
|
| const isProduction = process.env.NODE_ENV === 'production'; |
|
|
| const SD_HOST = '127.0.0.1'; |
| const SD_PORT = 7860; |
| export default defineConfig({ |
| base: '/dev', |
| build: { |
| cssMinify: true, |
| minify: 'terser', |
| outDir: './javascript', |
| rollupOptions: { |
| input: resolve(__dirname, 'src/main.tsx'), |
| output: { |
| assetFileNames: `[name].[ext]`, |
| chunkFileNames: `[name].js`, |
| entryFileNames: `[name].js`, |
| }, |
| }, |
| }, |
| define: { |
| 'process.env': process.env, |
| }, |
| plugins: [ |
| react(), |
|
|
| !isProduction && { |
| configureServer: (server) => { |
| server.middlewares.use((_request, res, next) => { |
| res.setHeader('Cross-Origin-Embedder-Policy', 'unsafe-none'); |
| res.setHeader('Cross-Origin-Opener-Policy', 'unsafe-non'); |
| next(); |
| }); |
| }, |
| name: 'configure-response-headers', |
| }, |
| !isProduction && { |
| configureServer: (server) => { |
| server.middlewares.use(async (_request, res, next): Promise<void> => { |
| if ( |
| _request.originalUrl === '/dev' || |
| _request.originalUrl === '/dev?__theme=dark' || |
| _request.originalUrl === '/dev?__theme=light' |
| ) { |
| const response = await fetch(`http://${SD_HOST}:${SD_PORT}/`); |
|
|
| let updatedResponse = await response.text(); |
|
|
| const toAdd = ` |
| <script type="module" src="/dev/src/_react_refresh.js"></script> |
| <script type="module" src="/dev/src/main.tsx"></script> |
| `; |
| updatedResponse = updatedResponse.replace('</body>', `</body>${toAdd}`); |
| res.statusCode = 200; |
| res.setHeader('Content-Type', 'text/html'); |
| res.setHeader('charset', 'utf8'); |
| res.end(updatedResponse); |
| return; |
| } |
| next(); |
| }); |
| }, |
| name: 'route-default-to-index', |
| }, |
| ], |
| resolve: { |
| alias: { |
| '@': resolve(__dirname, 'src'), |
| }, |
| }, |
| server: { |
| host: '127.0.0.1', |
| port: 8000, |
| proxy: { |
| '/queue/join': { |
| target: `ws://${SD_HOST}:${SD_PORT}`, |
| ws: true, |
| }, |
| '^(?!.*dev).*$': `http://${SD_HOST}:${SD_PORT}`, |
| }, |
| }, |
| }); |
|
|