Files
qwenpaw/website/scripts/spa-fallback-pages.mjs
agent-radar 1a3a4ccde1
Creator App Tests / PR Spam Gate (push) Skipped
Frontend Tests / PR Spam Gate (push) Skipped
NPM Format (website & console) / PR Spam Gate (push) Skipped
Pre-commit Checks / PR Spam Gate (push) Skipped
QwenPaw Creator Plugin Release / check-version (push) Canceled after 0s
QwenPaw Creator Plugin Release / upload-oss (push) Canceled after 0s
Tests / PR Spam Gate (push) Skipped
CodeQL / CodeQL (python) (push) Canceled after 0s
CodeQL / CodeQL (typescript) (push) Canceled after 0s
Creator App Tests / Creator Backend Tests (push) Canceled after 0s
Creator App Tests / Creator UI Build & Tests (push) Canceled after 0s
E2E Smoke Tests / Playwright UI Smoke (push) Canceled after 0s
Frontend Tests / Detect console changes (push) Canceled after 0s
NPM Format (website & console) / website format check (push) Canceled after 0s
NPM Format (website & console) / console format check (push) Canceled after 0s
Pre-commit Checks / Pre-commit (push) Canceled after 0s
QwenPaw Data Plugin Release / check-version (push) Canceled after 0s
Tests / Detect code changes (push) Canceled after 0s
Frontend Tests / Vitest Unit Tests (push) Canceled after 0s
Frontend Tests / Frontend Summary (push) Canceled after 0s
QwenPaw Data Plugin Release / upload-oss (push) Canceled after 0s
Tests / Maintainer Approval (push) Canceled after 0s
Tests / Unit Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Unit Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - macos-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.13 - ubuntu-latest (push) Canceled after 0s
Tests / Contract Tests - py3.11 - windows-latest (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - macos-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - fallback (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.13 - ubuntu-latest - p2 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p0 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p1 (push) Canceled after 0s
Tests / Integrated Tests - py3.11 - windows-latest - p2 (push) Canceled after 0s
Tests / Coverage Report (push) Canceled after 0s
Tests / Test Summary (push) Canceled after 0s
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:01:50 +08:00

69 lines
1.7 KiB
JavaScript

#!/usr/bin/env node
/**
* After vite build, copy index.html into docs/ and docs/<slug>/ so that
* static hosts (e.g. GitHub Pages) serve the SPA for each route without
* needing a Node server. Must match DOC_SLUGS in src/pages/Docs.tsx.
*/
import { mkdir, readFile, writeFile } from "fs/promises";
import { dirname, join } from "path";
import { fileURLToPath } from "url";
const __dirname = fileURLToPath(new URL(".", import.meta.url));
const distDir = join(__dirname, "..", "dist");
const DOC_SLUGS = [
"intro",
"quickstart",
"console",
"mailbox",
"channels",
"skills",
"memory",
"compact",
"commands",
"heartbeat",
"config",
"backup",
"cli",
"creator",
"community",
"contributing",
];
async function main() {
const indexHtml = await readFile(join(distDir, "index.html"), "utf-8");
const BLOG_SLUGS = [
"qwenpaw-mailbox",
"creator-install-guide",
"qwenpaw-long-term-memory",
"qwenpaw-files-workspace",
"qwenpaw-os-shell",
"introducing-qwenpaw-driver",
"qwenpaw-developer-day-collection",
"play-with-qwenpaw-pet",
"paw-git",
"runtime-architecture-upgrade",
"qwenpaw-plugin-picks-1",
"qwenpaw-loop-engineering",
"qwenpaw-sandbox",
];
const paths = [
"docs",
"docs/search",
...DOC_SLUGS.map((s) => `docs/${s}`),
"blog",
...BLOG_SLUGS.map((s) => `blog/${s}`),
];
for (const p of paths) {
const out = join(distDir, p, "index.html");
await mkdir(dirname(out), { recursive: true });
await writeFile(out, indexHtml);
}
console.log("[spa-fallback-pages] Wrote index.html for /, /docs, /docs/*");
}
main().catch((err) => {
console.error(err);
process.exit(1);
});