-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathvite.config.ts
More file actions
90 lines (85 loc) · 2.66 KB
/
vite.config.ts
File metadata and controls
90 lines (85 loc) · 2.66 KB
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
import process from "node:process";
import { type GlobalsOption } from "rollup";
import { type Options as ReplaceOptions } from "unplugin-replace";
import replace from "unplugin-replace/vite";
import { defineConfig, type LibraryOptions } from "vite";
import dts from "vite-plugin-dts";
import { externalizeDeps } from "vite-plugin-externalize-deps";
const umd = process.env.MODE === "umd";
const flavours: Record<string, LibraryOptions & { globals: GlobalsOption } & { replace?: ReplaceOptions["values"] }> = {
index: {
fileName: "index",
entry: { index: "src/index.ts" },
name: "maptilerGeocoder",
globals: {},
},
leaflet: {
fileName: "leaflet",
entry: { leaflet: "src/leaflet.public.ts" },
name: "maptilerGeocoder",
globals: {
leaflet: "L",
},
},
maplibregl: {
fileName: "maplibregl",
entry: { maplibregl: "src/maplibregl.public.ts" },
name: "maptilerGeocoder",
globals: {
"maplibre-gl": "maplibregl",
},
},
maptilersdk: {
fileName: "maptilersdk",
entry: { maptilersdk: "src/maptilersdk.public.ts" },
name: "maptilerGeocoder",
replace: [
// replace MapLibre with MapTiler SDK
{ find: /from "maplibre-gl"/g, replacement: 'from "@maptiler/sdk"' },
],
globals: {
"@maptiler/sdk": "maptilersdk",
},
},
openlayers: {
fileName: "openlayers",
entry: { openlayers: "src/openlayers.public.ts" },
name: "maptilerGeocoder",
globals: (name) => (name.startsWith("ol") ? name.replaceAll("/", ".") : ""),
},
};
const flavour = flavours[process.env.FLAVOUR!];
if (!process.env.FLAVOUR) throw new Error("No flavour specified for build!");
if (!flavour) throw new Error(`Flavour "${process.env.FLAVOUR}" is not valid for build!`);
export default defineConfig({
plugins: [
externalizeDeps({ deps: !umd }),
umd ? replace({ values: flavour.replace ?? [] }) : dts({ exclude: ["demos", "test", "vite.config*", "vitest-setup-tests.ts", "check-version.js"] }),
],
publicDir: "public",
build: {
sourcemap: true,
emptyOutDir: false,
lib: flavour,
rollupOptions: {
output: [
umd
? {
name: flavour.name,
format: "umd",
entryFileNames: "[name].umd.js",
chunkFileNames: "[name].umd.js",
assetFileNames: "[name].[ext]",
// Provide global variables to use in the UMD build for externalized deps
globals: flavour.globals,
}
: {
format: "es",
entryFileNames: "[name].js",
chunkFileNames: "[name].js",
assetFileNames: "[name].[ext]",
},
],
},
},
});