feat(docs): discover package metadata

This commit is contained in:
Maofeng
2026-09-29 17:20:25 +08:00
parent 844acad316
commit f56397fb97
16 changed files with 162 additions and 96 deletions
+25 -2
View File
@@ -7,12 +7,13 @@ import expressiveCode from "satteri-expressive-code"
import { fileURLToPath } from "node:url"
import { defineConfig, type Plugin } from "vite"
import { satteri } from "vite-plugin-satteri"
import { parse } from "yaml"
const packagesDirectory = fileURLToPath(new URL("../packages", import.meta.url))
/**
* Vite 默认监听 docs 根目录。现有的外部 MDX 会作为模块被监听,但新建 package
* 或新建 MDX 文件在首次进入模块图之前不会触发 import.meta.glob 重新计算。
* Vite 默认监听 docs 根目录。现有的外部文档与元数据会作为模块被监听,但新建
* package、meta.yaml 或 MDX 文件在首次进入模块图之前不会触发 glob 重新计算。
*/
function watchPackageDocs(): Plugin {
return {
@@ -23,6 +24,27 @@ function watchPackageDocs(): Plugin {
}
}
function loadYamlModules(): Plugin {
return {
name: "load-yaml-modules",
enforce: "pre",
transform(source, id) {
if (!/\/meta\.ya?ml(?:\?|$)/.test(id)) return
try {
return {
code: `export default ${JSON.stringify(parse(source))}`,
map: null,
}
} catch (error) {
this.error(
`Unable to parse ${id}: ${error instanceof Error ? error.message : String(error)}`
)
}
},
}
}
function loadDocSearchSources(): Plugin {
const suffix = "?docs-search-raw"
const virtualPrefix = "\0docs-search-raw:"
@@ -60,6 +82,7 @@ function loadDocSearchSources(): Plugin {
export default defineConfig({
plugins: [
watchPackageDocs(),
loadYamlModules(),
loadDocSearchSources(),
satteri({
features: {