-
Notifications
You must be signed in to change notification settings - Fork 0
/
vite.config.ts
143 lines (127 loc) · 4.48 KB
/
vite.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import path from "path";
import { defineConfig, loadEnv, splitVendorChunkPlugin } from "vite";
import vue from "@vitejs/plugin-vue";
import Components from "unplugin-vue-components/vite";
import AutoImport from "unplugin-auto-import/vite";
import Icons from "unplugin-icons/vite";
import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite";
import IconsResolver from "unplugin-icons/resolver";
// Simplifies static file copying during build, aiding efficient asset management for web apps using Vite.
import { viteStaticCopy } from "vite-plugin-static-copy";
// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
// Load env file based on `mode` in the current working directory.
// Set the third parameter to '' to load all env regardless of the `VITE_` prefix.
const env = loadEnv(mode, process.cwd(), "");
return {
// vite config
base: process.env.VITE_BASE_URL,
resolve: {
alias: {
// Makes '@/' the src folder for easy import
"@/": `${path.resolve(__dirname, "src")}/`,
//"@": fileURLToPath(new URL("./src", import.meta.url)),
},
},
server: {
port: 5173,
},
build: {
chunkSizeWarningLimit: 1000,
rollupOptions: {
output: {
manualChunks: {
phaser: ["phaser"],
},
},
},
// This is to prevent "Local data URIs are not supported" error. Phaser doesn't support data URIs. This will make it load the assets from the server instead.(It will include images as assets rather than data URIs). Size should be less than the size of the image. https://stackoverflow.com/questions/69431297/certain-files-not-being-bundled-in-vitejs
assetsInlineLimit: 100,
},
define: {
__APP_ENV__: env.APP_ENV,
},
css: {
preprocessorOptions: {
scss: {
// We need to import the variables and mixins here so that they are available in the global scope
additionalData: `@import "./src/assets/styles/_z-index.scss"; @import "./src/assets/styles/_variables.scss"; @import "./src/assets/styles/_mixins.scss"; @import "./src/assets/styles/_media-queries.scss";`,
},
},
},
plugins: [
vue({ include: [/\.vue$/] }),
// https://github.com/antfu/unplugin-auto-import
AutoImport({
imports: [
"vue",
"vue-router",
"vue-i18n",
"@vueuse/head",
"@vueuse/core",
{ "/src/utils/supabaseInit": ["supabase"] },
],
dts: "src/auto-imports.d.ts",
dirs: ["src/composables", "src/stores", "src/modules"],
}),
// https://github.com/antfu/unplugin-vue-components
Components({
// relative paths to the directory to search for components
dirs: ["src/**/components"],
// allow auto load markdown components under `./src/components/`
extensions: ["vue"],
// search for subdirectories
deep: true,
dts: "src/components.d.ts",
// allow auto import and register components used in markdown
include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
resolvers: [
// auto import icons
// https://github.com/antfu/unplugin-icons#auto-importing
IconsResolver({
prefix: false,
// Import icons from this collection https://icon-sets.iconify.design
// Easy icon finding: https://icones.netlify.app/
// TODO: Use less icon sets
enabledCollections: [
"carbon",
"ph",
"logos",
"ri",
"teenyicons",
"svg-spinners",
"gridicons",
"radix-icons",
"fluent-emoji",
"ion",
"fluent-emoji-flat",
],
}),
],
}),
Icons({
autoInstall: true,
/* https://github.com/antfu/unplugin-icons */
}),
VueI18nPlugin({
/* https://github.com/intlify/bundle-tools/tree/main/packages/unplugin-vue-i18n */
runtimeOnly: true,
compositionOnly: true,
include: [path.resolve(__dirname, "./locales/**")],
}),
viteStaticCopy({
targets: [
{
src: "src/game/images/characters/*",
dest: "data/",
},
],
}),
// https://vitejs.dev/guide/build.html#chunking-strategy
splitVendorChunkPlugin(),
],
optimizeDeps: {
include: ["@vueuse/core", "vue", "vue-router", "@vueuse/head"],
},
};
});