83 lines
2.2 KiB
JavaScript
83 lines
2.2 KiB
JavaScript
import path from "node:path";
|
|
import vue from "@vitejs/plugin-vue";
|
|
import { defineConfig } from "vite";
|
|
|
|
// Conditionally import frappe-ui plugin
|
|
async function getFrappeUIPlugin(isDev) {
|
|
if (isDev) {
|
|
try {
|
|
const module = await import("./frappe-ui/vite");
|
|
return module.default;
|
|
} catch (error) {
|
|
console.warn("Local frappe-ui not found, falling back to npm package:", error.message);
|
|
// Fall back to npm package if local import fails
|
|
const module = await import("frappe-ui/vite");
|
|
return module.default;
|
|
}
|
|
}
|
|
const module = await import("frappe-ui/vite");
|
|
return module.default;
|
|
}
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig(async ({ command, mode }) => {
|
|
const isDev = process.env.NODE_ENV !== "production";
|
|
const frappeui = await getFrappeUIPlugin(isDev);
|
|
|
|
const config = {
|
|
plugins: [
|
|
frappeui({
|
|
frappeProxy: {
|
|
port: 8080,
|
|
source: "^/(app|login|api|assets|files|private|razorpay_checkout|events)",
|
|
},
|
|
jinjaBootData: true,
|
|
lucideIcons: true,
|
|
buildConfig: {
|
|
indexHtmlPath: "../event_manager/www/dashboard.html",
|
|
emptyOutDir: true,
|
|
sourcemap: true,
|
|
outDir: "../event_manager/public/dashboard",
|
|
chunkSizeWarningLimit: 1500,
|
|
target: "es2015",
|
|
},
|
|
}),
|
|
vue(),
|
|
],
|
|
resolve: {
|
|
alias: {
|
|
"@": path.resolve(__dirname, "src"),
|
|
"tailwind.config.js": path.resolve(__dirname, "tailwind.config.js"),
|
|
},
|
|
},
|
|
optimizeDeps: {
|
|
include: ["feather-icons", "showdown", "highlight.js/lib/core", "interactjs"],
|
|
},
|
|
server: {
|
|
allowedHosts: true,
|
|
},
|
|
};
|
|
|
|
// Add local frappe-ui alias only in development if the local frappe-ui exists
|
|
if (isDev) {
|
|
try {
|
|
// Check if the local frappe-ui directory exists
|
|
const fs = await import("node:fs");
|
|
const localFrappeUIPath = path.resolve(__dirname, "frappe-ui");
|
|
if (fs.existsSync(localFrappeUIPath)) {
|
|
config.resolve.alias["frappe-ui/style.css"] = path.resolve(
|
|
localFrappeUIPath,
|
|
"src/style.css"
|
|
);
|
|
config.resolve.alias["frappe-ui"] = localFrappeUIPath;
|
|
} else {
|
|
console.warn("Local frappe-ui directory not found, using npm package");
|
|
}
|
|
} catch (error) {
|
|
console.warn("Error checking for local frappe-ui, using npm package:", error.message);
|
|
}
|
|
}
|
|
|
|
return config;
|
|
});
|