Feat: Host the NSA article's header image next to the article

Relative header_image paths (./img.webp) now resolve to /<slug>/img.webp, and article
assets also ship unhashed so og:image and JSON-LD URLs resolve.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-23 22:46:43 +00:00
co-authored by Claude Opus 5.5
parent 715be64a65
commit 24a26072f9
5 changed files with 16 additions and 3 deletions
+11
View File
@@ -1,9 +1,20 @@
import { defineConfig } from "vite";
import fs from "node:fs";
import fg from "fast-glob";
// Vite hashes images it finds in HTML into /assets/, but og:image and JSON-LD point at /<slug>/<file>, so ship those too
const articleAssets = {
name: "article-assets",
generateBundle() {
for (const fileName of fg.sync("*/*", { cwd: "src", ignore: ["**/*.html"] }))
this.emitFile({ type: "asset", fileName, source: fs.readFileSync(`src/${fileName}`) });
}
};
export default defineConfig({
root: "src",
publicDir: "../public",
plugins: [articleAssets],
build: {
outDir: "../dist",
emptyOutDir: true,