-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvite.config.ts
72 lines (67 loc) · 1.91 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
import { flavors } from "@catppuccin/palette";
import { faviconsPlugin } from "@darkobits/vite-plugin-favicons";
import type { FaviconsPluginOptions } from "@darkobits/vite-plugin-favicons/dist/etc/types";
import { sveltekit } from "@sveltejs/kit/vite";
import MagicString from "magic-string";
import type { Plugin } from "vite";
import { defineConfig } from "vite";
import { ViteImageOptimizer } from "vite-plugin-image-optimizer";
const baseFavicons: FaviconsPluginOptions["icons"][keyof FaviconsPluginOptions["icons"]] = {
"source": "./resources/badge.svg"
};
export default defineConfig({
"clearScreen": false,
"plugins": [
sveltekit(),
tablerSvelteImportOptimizer(),
faviconsPlugin({
"background": flavors.macchiato.colors.base.hex,
// biome-ignore lint/style/useNamingConvention: not my fault!
"theme_color": flavors.macchiato.colors.mauve.hex,
"display": "browser",
"icons": {
"favicons": baseFavicons,
"android": baseFavicons,
"appleIcon": baseFavicons,
"windows": baseFavicons
}
}),
ViteImageOptimizer({
"avif": {
"effort": 9,
"chromaSubsampling": "4:2:0"
},
"png": {
"effort": 10
},
"jpg": {
"mozjpeg": true
}
})
]
});
// https://github.com/tabler/tabler-icons/issues/669#issuecomment-1993756128
function tablerSvelteImportOptimizer(): Plugin {
return {
"name": "tabler-svelte optimizer",
transform(code, id) {
const string = new MagicString(code, { filename: id });
string.replace(/([ \t]*)import\s+\{([^;]*?)}\s+from\s+"@tabler\/icons-svelte";/g, (_, whitespace: string, importNames: string) => {
return importNames
.split(",")
.map((v) => v.trim())
.map((name) => {
return `${whitespace}import ${name} from "@tabler/icons-svelte/${name}.svelte";`;
})
.join("\n");
});
if (!string.hasChanged()) {
return;
}
return {
"code": string.toString(),
"map": string.generateMap()
};
}
};
}