| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite";
- import vue from "@vitejs/plugin-vue";
- import vueJsx from "@vitejs/plugin-vue-jsx";
- import laravel from "laravel-vite-plugin";
- import { fileURLToPath } from "node:url";
- import AutoImport from "unplugin-auto-import/vite";
- import Components from "unplugin-vue-components/vite";
- import {
- VueRouterAutoImports,
- getPascalCaseRouteName,
- } from "unplugin-vue-router";
- import VueRouter from "unplugin-vue-router/vite";
- import { defineConfig } from "vite";
- import VueDevTools from "vite-plugin-vue-devtools";
- import Layouts from "vite-plugin-vue-layouts";
- import vuetify from "vite-plugin-vuetify";
- // https://vitejs.dev/config/
- export default defineConfig({
- plugins: [
- // Docs: https://github.com/posva/unplugin-vue-router
- // ℹ️ This plugin should be placed before vue plugin
- VueRouter({
- getRouteName: (routeNode) => {
- // Convert pascal case to kebab case
- return getPascalCaseRouteName(routeNode)
- .replace(/([a-z0-9])([A-Z])/g, "$1-$2")
- .toLowerCase();
- },
- beforeWriteFiles: (root) => {
- // root.insert('/apps/email/:filter', '/resources/js/pages/apps/email/index.vue')
- // root.insert('/apps/email/:label', '/resources/js/pages/apps/email/index.vue')
- },
- routesFolder: "resources/js/pages",
- }),
- vue({
- template: {
- compilerOptions: {
- isCustomElement: (tag) =>
- tag === "swiper-container" || tag === "swiper-slide",
- },
- transformAssetUrls: {
- base: null,
- includeAbsolute: false,
- },
- },
- }),
- laravel({
- input: ["resources/js/main.js"],
- refresh: true,
- }),
- VueDevTools(),
- vueJsx(), // Docs: https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin
- vuetify({
- styles: {
- configFile: "resources/styles/variables/_vuetify.scss",
- },
- }), // Docs: https://github.com/johncampionjr/vite-plugin-vue-layouts#vite-plugin-vue-layouts
- Layouts({
- layoutsDirs: "./resources/js/layouts/",
- }), // Docs: https://github.com/antfu/unplugin-vue-components#unplugin-vue-components
- Components({
- dirs: [
- "resources/js/@core/components",
- "resources/js/views/demos",
- "resources/js/components",
- ],
- dts: true,
- resolvers: [
- (componentName) => {
- // Auto import `VueApexCharts`
- if (componentName === "VueApexCharts")
- return {
- name: "default",
- from: "vue3-apexcharts",
- as: "VueApexCharts",
- };
- },
- ],
- }), // Docs: https://github.com/antfu/unplugin-auto-import#unplugin-auto-import
- AutoImport({
- imports: [
- "vue",
- VueRouterAutoImports,
- "@vueuse/core",
- "@vueuse/math",
- "vue-i18n",
- "pinia",
- ],
- dirs: [
- "./resources/js/@core/utils",
- "./resources/js/@core/composable/",
- "./resources/js/composables/",
- "./resources/js/utils/",
- "./resources/js/plugins/*/composables/*",
- ],
- vueTemplate: true,
- // ℹ️ Disabled to avoid confusion & accidental usage
- ignore: ["useCookies", "useStorage"],
- eslintrc: {
- enabled: true,
- filepath: "./.eslintrc-auto-import.json",
- },
- }), // Docs: https://github.com/intlify/bundle-tools/tree/main/packages/unplugin-vue-i18n#intlifyunplugin-vue-i18n
- VueI18nPlugin({
- runtimeOnly: true,
- compositionOnly: true,
- include: [
- fileURLToPath(
- new URL("./resources/js/plugins/i18n/locales/**", import.meta.url)
- ),
- ],
- }),
- ],
- define: {
- "process.env": {},
- },
- resolve: {
- alias: {
- "@core-scss": fileURLToPath(
- new URL("./resources/styles/@core", import.meta.url)
- ),
- "@": fileURLToPath(new URL("./resources/js", import.meta.url)),
- "@themeConfig": fileURLToPath(
- new URL("./themeConfig.js", import.meta.url)
- ),
- "@core": fileURLToPath(new URL("./resources/js/@core", import.meta.url)),
- "@layouts": fileURLToPath(
- new URL("./resources/js/@layouts", import.meta.url)
- ),
- "@images": fileURLToPath(new URL("./resources/images/", import.meta.url)),
- "@styles": fileURLToPath(new URL("./resources/styles/", import.meta.url)),
- "@configured-variables": fileURLToPath(
- new URL("./resources/styles/variables/_template.scss", import.meta.url)
- ),
- apexcharts: fileURLToPath(
- new URL("node_modules/apexcharts-clevision", import.meta.url)
- ),
- "@db": fileURLToPath(
- new URL("./resources/js/plugins/fake-api/handlers/", import.meta.url)
- ),
- "@api-utils": fileURLToPath(
- new URL("./resources/js/plugins/fake-api/utils/", import.meta.url)
- ),
- vuetify: fileURLToPath(new URL("node_modules/vuetify", import.meta.url)),
- },
- },
- build: {
- chunkSizeWarningLimit: 5000,
- },
- optimizeDeps: {
- exclude: ["vuetify"],
- entries: ["./resources/js/**/*.vue"],
- },
- });
|