release: v0.17.0
GitHub Pages / build (push) Canceled after 0s
GitHub Pages / deploy (push) Canceled after 0s
Docker image / meta (push) Successful in 24s
Docs Docker image / meta (push) Successful in 7s
Docker image / build (amd64, linux/amd64, ubuntu-latest) (push) Failing after 59s
Docs Docker image / build (amd64, linux/amd64, ubuntu-latest) (push) Failing after 30s
Docker image / merge (push) Canceled after 0s
Docs Docker image / merge (push) Canceled after 0s
Docker image / build (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
Docs Docker image / build (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s

This commit is contained in:
Qiufeng
2026-08-19 22:09:49 +08:00
parent 9414048f9d
commit 84e9e7bff5
469 changed files with 19997 additions and 39561 deletions
+14 -31
View File
@@ -1,8 +1,8 @@
import { readdirSync, readFileSync } from "node:fs";
import { readFileSync } from "node:fs";
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import react from "@vitejs/plugin-react";
import { defineConfig, type Plugin } from "vite";
import { defineConfig } from "vite";
import { parseChangelog } from "./src/lib/release";
@@ -10,37 +10,9 @@ const webDir = dirname(fileURLToPath(import.meta.url));
const localVersion = readFileSync(resolve(webDir, "../VERSION"), "utf8").trim() || "dev";
const localChangelog = readFileSync(resolve(webDir, "../CHANGELOG.md"), "utf8");
// Expose /plugins/index.json with local plugin files from public/plugins.
// The frontend can discover and list them when enabled; development reads the directory live, while builds emit a static registry.
function localPluginsManifest(): Plugin {
const pluginsDir = resolve(webDir, "public/plugins");
const listLocalPlugins = () => {
try {
return readdirSync(pluginsDir)
.filter((file) => file.endsWith(".js"))
.sort()
.map((file) => `/plugins/${file}`);
} catch {
return [];
}
};
return {
name: "local-plugins-manifest",
configureServer(server) {
server.middlewares.use("/plugins/index.json", (_req, res) => {
res.setHeader("Content-Type", "application/json");
res.end(JSON.stringify(listLocalPlugins()));
});
},
generateBundle() {
this.emitFile({ type: "asset", fileName: "plugins/index.json", source: JSON.stringify(listLocalPlugins()) });
},
};
}
export default defineConfig({
base: process.env.VITE_BASE || "/",
plugins: [react(), localPluginsManifest()],
plugins: [react()],
resolve: {
alias: {
"@": resolve(webDir, "src"),
@@ -50,4 +22,15 @@ export default defineConfig({
__APP_VERSION__: JSON.stringify(localVersion),
__APP_RELEASES__: JSON.stringify(parseChangelog(localChangelog)),
},
server: {
host: "0.0.0.0",
port: 3000,
proxy: {
"/admin": {
target: "http://127.0.0.1:3003",
changeOrigin: true,
ws: true,
},
},
},
});