-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathvite.config.mjs
107 lines (97 loc) · 2.85 KB
/
vite.config.mjs
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
import { parse } from "@std/yaml";
import * as path from "@std/path";
import { defineConfig } from 'npm:vite';
import denoResolve from "denoResolve";
import { svelte, vitePreprocess } from 'npm:@sveltejs/vite-plugin-svelte';
import markdownIt from "npm:markdown-it";
import preprocess from "npm:svelte-preprocess";
import { replaceCodePlugin } from "npm:vite-plugin-replace";
import "npm:svelte";
const devMode = Deno.env.get("VITE_APP_DEV_MODE") === "true";
const mockBackend = Deno.env.get("MOCK_BACKEND") === "true";
console.log("devMode:", devMode, "mockBackend:", mockBackend);
const devUrl = mockBackend
? "http://localhost:3000/member" // Lume middleware
: "http://localhost:8082/member"; // Local Quarkus backend
const baseUrl = devMode
? devUrl
: "https://haus-keeper.commonhaus.org/member";
const devModeHook = mockBackend
? Deno.readTextFileSync("member/dev-mode.js")
: "";
console.log("baseUrl:", baseUrl, ", devModeHook:", devModeHook !== "");
function yamlPlugin() {
const virtualModuleId = 'virtual:attest-yaml';
const resolvedVirtualModuleId = '\0' + virtualModuleId
const yamlFilePath = path.resolve('site/foundation/agreements/membership/members.yaml');
return {
name: 'yaml-plugin',
resolveId(source) {
if (source === virtualModuleId) {
return resolvedVirtualModuleId;
}
},
async load(id) {
if (id === resolvedVirtualModuleId) {
const yamlText = await Deno.readTextFile(yamlFilePath);
const yamlData = parse(yamlText) || {};
const md = markdownIt();
// Iterate over the values in yamlData.status and convert
// markdown to HTML
for (const value of Object.values(yamlData.role)) {
if (value.preamble) {
value.preamble = md.render(value.preamble);
}
}
// Iterate over the values in yamlData.attestations and convert
// markdown to HTML
for (const value of Object.values(yamlData.attestations)) {
if (value.body) {
value.body = md.render(value.body);
}
}
return `export default ${JSON.stringify(yamlData)};`;
}
},
};
}
export default defineConfig({
publicDir: false,
build: {
outDir: 'public',
emptyOutDir: false,
ssr: false,
minify: !devMode,
sourcemap: devMode,
rollupOptions: {
input: 'member/member.ts',
output: {
entryFileNames: 'assets/member.js'
},
}
},
isWorker: false,
plugins: [
yamlPlugin(),
denoResolve(),
svelte({
/* plugin options */
preprocess: [
vitePreprocess(),
preprocess()
]
}),
replaceCodePlugin({
replacements: [
{
from: "__BASE_URL__",
to: baseUrl,
},
{
from: "window.devMode = {};",
to: devModeHook,
},
],
}),
]
});