-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathvite.config.js
More file actions
79 lines (74 loc) · 2.15 KB
/
Copy pathvite.config.js
File metadata and controls
79 lines (74 loc) · 2.15 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
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import tailwindcss from "tailwindcss";
import pkg from "./package.json";
import { execFileSync } from "child_process";
import path from "path";
import fs from "fs";
const LHCI_PREFIX = process.env.LHCI_PREFIX || "http://localhost:5173/";
function RoutesToLHCIPlugin() {
return {
name: "routes-to-lhci",
apply: "build",
closeBundle() {
// After build, regenerate .lighthouserc.gen.json from routes
const node = process.execPath;
const script = path.resolve("scripts/extract-routes.js");
if (!fs.existsSync(script)) {
console.warn("[routes-to-lhci] scripts/extract-routes.js not found");
return;
}
try {
execFileSync(node, [script], {
stdio: "inherit",
env: { LHCI_PREFIX },
});
} catch (e) {
console.error("[routes-to-lhci] failed to generate LHCI config", e);
}
},
};
}
export default defineConfig(({ mode }) => {
if (mode === "lib") {
console.log("Building library");
return {
plugins: [react(), tailwindcss()],
publicDir: false,
build: {
lib: {
name: "Groundwork",
fileName: (format) => `groundwork.${format}.js`,
entry: "lib/index.jsx",
},
rollupOptions: {
external: ["react", "react-dom", "react/jsx-runtime"],
output: {
assetFileNames: (assetInfo) => {
if (assetInfo.name?.endsWith(".css")) {
return "groundwork.css";
}
return "[name][extname]";
},
globals: {
react: "React",
"react-dom": "ReactDOM",
"react/jsx-runtime": "ReactJsxRuntime",
},
},
},
},
};
}
console.log("Building preview app", mode);
const base =
mode === "production"
? "https://usace.github.io/groundwork/"
: "http://localhost:5173/";
return {
plugins: [react(), RoutesToLHCIPlugin()],
base,
build: { outDir: "docs" },
define: { "import.meta.env.PKG_VERSION": JSON.stringify(pkg.version) },
};
});