Files
certimate/ui/vite.config.ts
T

94 lines
2.6 KiB
TypeScript

import path from "node:path";
import tailwindcssPlugin from "@tailwindcss/vite";
import legacyPlugin from "@vitejs/plugin-legacy";
import reactPlugin from "@vitejs/plugin-react";
import fs from "fs-extra";
import { type Plugin, defineConfig } from "vite";
const preserveFilesPlugin = (filesToPreserve: string[]): Plugin => {
return {
name: "preserve-files",
apply: "build",
buildStart() {
// 在构建开始时将要保留的文件或目录移动到临时位置
filesToPreserve.forEach((file) => {
const srcPath = path.resolve(__dirname, file);
const tempPath = path.resolve(__dirname, `node_modules/.tmp/build/${file}`);
if (fs.existsSync(srcPath)) {
fs.moveSync(srcPath, tempPath, { overwrite: true });
}
});
},
closeBundle() {
// 在构建完成后将临时位置的文件或目录移回原来的位置
filesToPreserve.forEach((file) => {
const srcPath = path.resolve(__dirname, file);
const tempPath = path.resolve(__dirname, `node_modules/.tmp/build/${file}`);
if (fs.existsSync(tempPath)) {
fs.moveSync(tempPath, srcPath, { overwrite: true });
}
});
},
};
};
export default defineConfig(({ command }) => {
let appVersion = undefined;
try {
const content = fs.readFileSync(path.resolve(__dirname, "../internal/app/app.go"), "utf-8");
const matches = content.match(/AppVersion\s+=\s+"(.+?)"/);
if (matches) {
appVersion = matches[1];
if (command === "serve") {
appVersion += "-dev";
}
console.info("[certimate] AppVersion is " + appVersion);
} else {
throw new Error("AppVersion not found in '/internal/app/app.go'");
}
} catch (err) {
throw new Error("Could not read app version: " + (err as Error).message);
}
return {
define: {
__APP_VERSION__: JSON.stringify(appVersion),
},
build: {
rolldownOptions: {
output: {
manualChunks(id) {
if (id.includes("/src/i18n/")) {
return "locales";
}
},
},
},
},
plugins: [
reactPlugin({}),
legacyPlugin({
targets: ["defaults", "not IE 11"],
modernTargets: "chrome>=111, firefox>=113, safari>=15.4",
polyfills: true,
modernPolyfills: true,
renderLegacyChunks: false,
renderModernChunks: true,
}),
tailwindcssPlugin(),
preserveFilesPlugin(["dist/.gitkeep"]),
],
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
server: {
proxy: {
"/api": "http://127.0.0.1:8090",
},
},
};
});