forked from github/quartz
fix(ox-hugo): serve gitignored content and static assets, fix figure shortcode order
- glob.ts: add optional respectGitignore param (default true) so callers
can opt out of gitignore filtering for generated directories
- build.ts: pass respectGitignore=false when globbing content/ so
gitignored-but-generated markdown files are always picked up
- static.ts: copy top-level static/ → output/ root with gitignore disabled,
mirroring Hugo's convention so ox-hugo images at static/ox-hugo/* are
served at /ox-hugo/* as expected by the exported markdown src paths
- oxhugofm.ts: run replaceFigureWithMdImg before removeHugoShortcode so the
precise figure regex sees the intact shortcode before the generic {{.*}}
stripper destroys it; also upgrade figureTagRegex to figureShortcodeRegex
which matches the full shortcode form ox-hugo actually emits
This commit is contained in:
@@ -7,6 +7,7 @@ import { dirname } from "path"
|
||||
export const Static: QuartzEmitterPlugin = () => ({
|
||||
name: "Static",
|
||||
async *emit({ argv, cfg }) {
|
||||
// Copy Quartz's own internal static assets (quartz/static/) → output/static/
|
||||
const staticPath = joinSegments(QUARTZ, "static")
|
||||
const fps = await glob("**", staticPath, cfg.configuration.ignorePatterns)
|
||||
const outputStaticPath = joinSegments(argv.output, "static")
|
||||
@@ -18,6 +19,21 @@ export const Static: QuartzEmitterPlugin = () => ({
|
||||
await fs.promises.copyFile(src, dest)
|
||||
yield dest
|
||||
}
|
||||
|
||||
// Copy user-facing static assets (static/) → output/ preserving paths.
|
||||
// This mirrors Hugo's convention: static/ox-hugo/foo.png is served at /ox-hugo/foo.png,
|
||||
// which matches the src="/ox-hugo/..." paths that ox-hugo writes into exported markdown.
|
||||
const userStaticPath = "static"
|
||||
if (fs.existsSync(userStaticPath)) {
|
||||
const userFps = await glob("**", userStaticPath, cfg.configuration.ignorePatterns, false)
|
||||
for (const fp of userFps) {
|
||||
const src = joinSegments(userStaticPath, fp) as FilePath
|
||||
const dest = joinSegments(argv.output, fp) as FilePath
|
||||
await fs.promises.mkdir(dirname(dest), { recursive: true })
|
||||
await fs.promises.copyFile(src, dest)
|
||||
yield dest
|
||||
}
|
||||
}
|
||||
},
|
||||
async *partialEmit() {},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user