Files
2025-12-22 16:19:04 -05:00

63 lines
1.7 KiB
JavaScript

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';
// Plugin to correctly handle the ComfyUI scripts in development mode
const rewriteComfyImports = ({ isDev }) => {
return {
name: "rewrite-comfy-imports",
resolveId(source) {
if (!isDev) {
return;
}
if (source === "/scripts/app.js") {
return "http://127.0.0.1:8188/scripts/app.js";
}
if (source === "/scripts/api.js") {
return "http://127.0.0.1:8188/scripts/api.js";
}
return null;
},
};
};
// Plugin to copy locales to the output directory
const copyLocales = () => {
return {
name: "copy-locales",
writeBundle() {
// This runs after bundle is written
console.log("Bundle complete, copying locales...");
}
};
};
export default defineConfig(({ mode }) => ({
plugins: [
react(),
rewriteComfyImports({ isDev: mode === "development" }),
copyLocales()
],
publicDir: "public", // Explicitly set public directory
build: {
emptyOutDir: true,
rollupOptions: {
// Don't bundle ComfyUI scripts - they will be loaded from the ComfyUI server
external: ['/scripts/app.js', '/scripts/api.js'],
input: {
main: path.resolve(__dirname, 'src/main.tsx'),
},
output: {
// Output to the dist/example_ext directory
dir: '../dist',
entryFileNames: 'example_ext/[name].js',
chunkFileNames: 'example_ext/[name]-[hash].js',
assetFileNames: 'example_ext/[name][extname]',
// Split React into a separate vendor chunk for better caching
manualChunks: {
'vendor': ['react', 'react-dom'],
}
}
}
}
}));