@ clean-jsdoc-主题/战争
纯站点管理 → HTML/CSS/JS 渲染器. 通过 Preact 组件编译 MDX
从 @clean-jsdoc-theme/rang,服务器发送每个页面,将岛屿捆绑在
一个拆分的建筑(共享块+每个内容覆盖的条目块)
并发布CSS.
公共 API
render(manifest, opts): Promise<RenderResult>—— 软件包唯一的导出: 一个纯的async函数返回一个内存RenderResult(单位:千美元)OutputFile[], (中文(简体) ),SearchEntry[], (中文(简体) ),errors, (中文(简体) ),stats) (中文(简体) ). 呼叫者坚持文件本身。 未编译的页面被跳过并报告于RenderResult.errors从来没有扔.
使用量
import { render } from '@clean-jsdoc-theme/dwar';
import { generateSite } from '@clean-jsdoc-theme/setu';
import { writeFile, mkdir } from 'node:fs/promises';
import { dirname, join } from 'node:path';
const manifest = generateSite(saltyCollection);
const result = await render(manifest, {
theme: {
tokens: {
colors: {
bg: '#ffffff',
bgMuted: '#f5f5f5',
fg: '#111111',
fgMuted: '#666666',
accent: '#0070f3',
accentFg: '#ffffff',
border: '#e5e5e5',
},
fonts: { heading: 'Source Serif 4', body: 'Roboto', mono: 'ui-monospace' },
shiki: { light: 'github-light', dark: 'github-dark' },
siteName: 'My Docs',
},
basePath: '/',
},
});
const outDir = './dist';
for (const file of result.files) {
const target = join(outDir, file.path);
await mkdir(dirname(target), { recursive: true });
await writeFile(target, file.contents);
}
什麽 render() 发射
<slug>/index.html百分比Page每一个<head>包括水分前的主题脚本( 在样式表链接之前) 防止 FOUC; 内置标题控制器 + 岛屿加载器脚本</body>。 。 。 .<slug>/index.md每个内容页——页面的MDX正文逐字记录,与HTML(用于LLMs +复制页按钮)合用. 源查看器的页面没有发出任何消息._assets/styles.${buildId}.css——主题:root编号 :[data-theme="dark"]符号块外加预建的静态公用层 ._assets/search-index.${buildId}.json模糊的搜索索引cmdk岛取来._islands/<name>.js百分比IslandName——内容被遮住的条目块从一个分块的建筑上分出,共享一个共同的Preact + Rang块.- 每页
<script data-island-props>{ "i0": …, "i1": …, … }</script>携带连环岛道具. - A 类 复制页 {\fn华文楷体\fs20\bord1\shad1\1che0e0e0\2ch000000}被活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活 预览/下一页 (单位:千美元)
PageNav下方的内容页——每道门由ThemeConfig(单位:千美元)copyPage编号 :pageNav),从不出现在源页面. RenderResult.search一个SearchEntry每个非隐藏页,准备下游索引.
对a 本地化 建筑(RenderOptions.locale),SSR树被包裹在一
bhasha (英语) LanguageProvider,一个 __i18n 每个岛根的有效载荷种子(无)
水分漂移, <html lang> 财务报告和审定财务报表 hreflang 候补已设置
语言切换器已挂载。 没有的建筑 locale 字节与
从前.
kind: 'source' 页面全部跳过 MDX : 原始来源留在 SSR 中 <pre>
(关闭JSON有效载荷) code-viewer 摩纳哥从一个CDN 懒惰的岛屿
来增强它.
管道安装
SiteManifest ──► dwar.render ──► OutputFile[] ──► caller writes ──► static site
│
├── MDX via @mdx-js/mdx + rang.defaultMdxComponents
├── SSR via preact-render-to-string + rang.Layout
├── Island markers wrapping rang.ISLAND_REGISTRY entries
├── Islands bundled via esbuild (shared chunk + per-island entry)
└── CSS: per-theme token block + prebuilt utility layer
页:1
render()实值 纯: 无fs,没有process.cwd没有伐木。 坚持不懈是召唤者的责任. 一个磁盘触摸是选择入岛缓存(RenderOptions.islandCacheDir; 省略该词和render()完全不碰磁盘.- CSS在矮人自己的建设时间编译一次.
scripts/build-css.mjs运行 Tailwindow v4 CLI 运行于 Rang's + Dwar 源头,并将结果输入src/generated/utility-css.ts尾风从不冲向消费者jsdoc建造,所以render()保持纯度, 用户不需要 Tailwind 配置; 只有:root编号 :[data-theme="dark"]每个符号块被释放ThemeConfig在时间. - 一个防守
{@link Foo}→`@link Foo`预处理器在src/mdx.ts用作安全网。 setu 现在解决了上游的链接,所以只有真-不可解的标记到达了这个代码,其中的内置-代码倒计时会持续编辑页面.
贡献者
感谢所有帮助建立干净的jsdoc主题的人.
许可证
麻省理工学院.