mirror of
https://github.com/amir20/dozzle.git
synced 2026-06-22 20:00:11 +00:00
a79ffdaf50
Co-authored-by: Dhaval Patel <dhavu262@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
95 lines
2.4 KiB
TypeScript
95 lines
2.4 KiB
TypeScript
import path from "node:path";
|
|
import { defineConfig } from "vite";
|
|
import Vue from "@vitejs/plugin-vue";
|
|
import VueMacros from "unplugin-vue-macros/vite";
|
|
import Icons from "unplugin-icons/vite";
|
|
import Components from "unplugin-vue-components/vite";
|
|
import AutoImport from "unplugin-auto-import/vite";
|
|
import IconsResolver from "unplugin-icons/resolver";
|
|
import VueRouter from "vue-router/vite";
|
|
import Layouts from "vite-plugin-vue-layouts";
|
|
import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite";
|
|
import svgLoader from "vite-svg-loader";
|
|
import tailwindcss from "@tailwindcss/vite";
|
|
|
|
export default defineConfig(() => ({
|
|
define: {
|
|
__CLOUD_URL__: JSON.stringify(process.env.CLOUD_URL || "https://cloud.dozzle.dev"),
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
"@/": `${path.resolve(__dirname, "assets")}/`,
|
|
},
|
|
},
|
|
build: {
|
|
manifest: true,
|
|
rollupOptions: {
|
|
input: "assets/main.ts",
|
|
},
|
|
modulePreload: {
|
|
polyfill: false,
|
|
},
|
|
target: "esnext",
|
|
chunkSizeWarningLimit: 600,
|
|
},
|
|
plugins: [
|
|
VueRouter({
|
|
routesFolder: {
|
|
src: "./assets/pages",
|
|
},
|
|
dts: "./assets/typed-router.d.ts",
|
|
importMode: "sync", // this can't be async because it won't work with custom base
|
|
}),
|
|
VueMacros({
|
|
plugins: {
|
|
vue: Vue(),
|
|
},
|
|
}),
|
|
Icons({
|
|
autoInstall: true,
|
|
}),
|
|
|
|
Layouts({
|
|
layoutsDirs: "assets/layouts",
|
|
}),
|
|
Components({
|
|
dirs: ["assets/components"],
|
|
resolvers: [
|
|
IconsResolver({
|
|
componentPrefix: "",
|
|
}),
|
|
],
|
|
|
|
dts: "assets/components.d.ts",
|
|
}),
|
|
AutoImport({
|
|
imports: [
|
|
"vue",
|
|
// Replace VueRouterAutoImports with explicit imports:
|
|
{
|
|
"vue-router/auto": ["useRoute", "useRouter", "useLink"],
|
|
"vue-router": ["onBeforeRouteLeave", "onBeforeRouteUpdate"],
|
|
},
|
|
"vue-i18n",
|
|
"pinia",
|
|
"@vueuse/head",
|
|
"@vueuse/core",
|
|
],
|
|
dts: "assets/auto-imports.d.ts",
|
|
dirs: ["assets/composable", "assets/stores", "assets/utils/index.ts"],
|
|
vueTemplate: true,
|
|
}),
|
|
VueI18nPlugin({
|
|
runtimeOnly: true,
|
|
strictMessage: false,
|
|
include: [path.resolve(__dirname, "locales/**")],
|
|
}),
|
|
svgLoader({}),
|
|
tailwindcss(),
|
|
],
|
|
test: {
|
|
include: ["assets/**/*.spec.ts"],
|
|
setupFiles: ["./assets/test-setup.ts"],
|
|
},
|
|
}));
|