139 lines
4.4 KiB
TypeScript
139 lines
4.4 KiB
TypeScript
/*
|
|
* @Author: 晴知 qingli.hql@alibaba-inc.com
|
|
* @Date: 2024-12-10 22:11:57
|
|
* @LastEditors: ai-business-hql ai.bussiness.hql@gmail.com
|
|
* @LastEditTime: 2025-02-25 20:58:44
|
|
* @FilePath: /comfyui_copilot/ui/vite.config.ts
|
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
|
*/
|
|
import { defineConfig } from "vite";
|
|
import react from "@vitejs/plugin-react";
|
|
import { exec } from 'child_process';
|
|
import path from 'path';
|
|
import tailwindcss from 'tailwindcss';
|
|
import autoprefixer from 'autoprefixer';
|
|
import postcssNesting from 'postcss-nesting';
|
|
|
|
const rewriteImportPlugin = ({ isDev }) => {
|
|
return {
|
|
name: "rewrite-import-plugin", // this name will show up in warnings and errors
|
|
resolveId(source) {
|
|
if (!isDev) {
|
|
return;
|
|
}
|
|
if (source === "/scripts/app.js") {
|
|
// Change the path to the new host
|
|
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; // Other imports should not be affected
|
|
},
|
|
};
|
|
};
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig(({ mode }) => ({
|
|
envDir: ".",
|
|
css: {
|
|
postcss: {
|
|
plugins: [
|
|
postcssNesting(),
|
|
tailwindcss(),
|
|
autoprefixer(),
|
|
],
|
|
},
|
|
},
|
|
build: {
|
|
watch: mode === "development" ? {
|
|
include: ["src/**"],
|
|
buildStart() {
|
|
// 只在开发模式下启动 Tailwind CSS watch 进程
|
|
console.log("Starting Tailwind CSS watch process...");
|
|
const tailwindProcess = exec(
|
|
'npx tailwindcss -i ./src/scoped-tailwind.css -o ./src/output.css --watch',
|
|
(error, stdout, stderr) => {
|
|
if (error) {
|
|
console.error(`Tailwind CSS watch error: ${error}`);
|
|
return;
|
|
}
|
|
if (stderr) {
|
|
console.error(`Tailwind CSS stderr: ${stderr}`);
|
|
return;
|
|
}
|
|
console.log(`Tailwind CSS stdout: ${stdout}`);
|
|
}
|
|
);
|
|
|
|
// Cleanup process on build end
|
|
process.on('exit', () => {
|
|
tailwindProcess.kill();
|
|
});
|
|
console.log("Tailwind CSS watch process started.");
|
|
}
|
|
} : undefined, // 在生产环境下不启用 watch
|
|
// minify: false, // ___DEBUG__MODE only
|
|
// sourcemap: true, // ___DEBUG___MODE only
|
|
emptyOutDir: true,
|
|
rollupOptions: {
|
|
// externalize deps that shouldn't be bundled into your library
|
|
external: ["/scripts/app.js", "/scripts/api.js"],
|
|
input: {
|
|
input: "/src/main.tsx",
|
|
fonts: "/src/fonts.css"
|
|
},
|
|
output: {
|
|
// Provide global variables to use in the UMD build for externalized deps
|
|
globals: {
|
|
app: "app",
|
|
Litegraph: "LiteGraph",
|
|
},
|
|
dir: "../dist",
|
|
// assetFileNames: "[name]-[hash][extname]",
|
|
entryFileNames: "copilot_web/[name].js",
|
|
chunkFileNames: `copilot_web/[name]-[hash].js`,
|
|
assetFileNames: (assetInfo) => {
|
|
if (assetInfo.name === 'fonts.css') {
|
|
return 'copilot_web/[name].css';
|
|
}
|
|
return `copilot_web/assets/[name]-[hash].[ext]`;
|
|
},
|
|
manualChunks: {
|
|
// 只包含实际使用的 React 相关依赖
|
|
'vendor-react': ['react', 'react-dom'],
|
|
|
|
// Markdown 相关依赖
|
|
'vendor-markdown': [
|
|
'react-markdown',
|
|
'remark-gfm',
|
|
'remark-math',
|
|
'rehype-katex',
|
|
'rehype-external-links'
|
|
],
|
|
|
|
// UI 组件
|
|
'vendor-ui': [
|
|
'@heroicons/react'
|
|
],
|
|
|
|
// 消息组件
|
|
'message-components': [
|
|
'./src/components/chat/messages/AIMessage',
|
|
'./src/components/chat/messages/UserMessage',
|
|
'./src/components/chat/messages/NodeInstallGuide',
|
|
'./src/components/chat/messages/NodeSearch',
|
|
'./src/components/chat/messages/DownstreamSubgraphs',
|
|
],
|
|
}
|
|
},
|
|
},
|
|
// Enable compression
|
|
target: 'esnext',
|
|
minify: 'esbuild',
|
|
cssMinify: true,
|
|
chunkSizeWarningLimit: 600 // 适当调整警告阈值
|
|
},
|
|
plugins: [react(), rewriteImportPlugin({ isDev: mode === "development" })],
|
|
}));
|