-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathvite.config.watch.ts
69 lines (65 loc) · 1.65 KB
/
vite.config.watch.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
import { defineConfig } from "vite";
import pluginReact from "@vitejs/plugin-react";
import pluginRenderer from "vite-plugin-electron-renderer";
import pluginSVGR from "vite-plugin-svgr";
import pluginTsconfigPaths from "vite-tsconfig-paths";
import glob from "fast-glob";
import path from "path";
const EXTERNALS = [
"@tensorflow/tfjs-node",
"@tensorflow/tfjs-node-gpu",
"@vladmandic/face-api/dist/face-api.node-gpu.js",
"aws-sdk",
"crypto",
"fluent-ffmpeg",
"fs",
"mock-aws-s3",
"mongoose",
"nock",
"path",
"sharp",
];
let isInitialBuild = true;
export default defineConfig({
build: {
minify: false,
outDir: "build",
sourcemap: true,
watch: {
include: ["medior/**/*"],
},
},
define: {
"process.env.BUILD_DEV": true,
},
optimizeDeps: { exclude: EXTERNALS },
plugins: [
pluginReact(),
pluginRenderer({ nodeIntegration: true, resolve: () => EXTERNALS }),
pluginSVGR(),
pluginTsconfigPaths(),
{
name: "watcher",
apply: "build",
enforce: "pre",
async buildStart() {
const files = await glob(["medior/**/*"]);
files.forEach((file) => this.addWatchFile(path.resolve(file)));
},
},
{
name: "post-build",
apply: "build",
enforce: "post",
async writeBundle() {
// const watchedFiles = this.getWatchFiles().filter((f) => !f.includes("node_modules"));
// logToFile("debug", "Watched files:", JSON.stringify(watchedFiles, null, 2));
if (isInitialBuild) {
const { exec } = await import("child_process");
exec("electron .");
isInitialBuild = false;
}
},
},
],
});