由 Astro Starlight 迁移
由 Astro Starlight 迁移到 docmd
Starlight 是一个构建在 Astro 框架上的出色文档主题。docmd 提供了类似的默认零 JavaScript 体验,但它消除了配置完整 Web 框架 (Astro) 的需要,从而大幅降低了技术作者的学习曲线。
第一步:运行迁移引擎
在您现有的 Starlight 项目的根目录(即 astro.config.mjs 所在的位置)运行以下命令:
npx @docmd/core migrate --starlight
自动执行的操作
- 备份:您的整个项目会被安全地移动到一个新的
starlight-backup/目录中。 - 内容迁移:Starlight 将文档保存在
src/content/docs/目录中。迁移引擎会自动提取该特定目录,并将其内容移动至根目录下的docs/文件夹供docmd使用。 - 配置生成:生成一个
docmd.config.js文件,从astro.config.mjs内的 Starlight 集成中提取您的站点title。
第二步:测试配置
命令完成后,在 docmd 中预览您的内容:
npx @docmd/core dev
您的 Markdown 文件将被编译,但导航侧边栏此时为空。
第三步:手动配置
1. 导航设置
Starlight 通过 sidebar 数组在 astro.config.mjs 中定义导航。
所需操作: 您必须在您新生成的 docs/ 文件夹内创建一个 navigation.json 文件。
Starlight (astro.config.mjs):
sidebar: [
{
label: 'Guides',
items: [
{ label: 'Setup', link: '/guides/setup/' }
],
},
]
docmd (navigation.json):
[
{
"title": "Guides",
"collapsible": true,
"children": [
{ "title": "Setup", "path": "/guides/setup" }
]
}
]
2. 替换 Astro 组件 (MDX/Markdoc)
Starlight 使用通过 MDX 或 Markdoc 嵌入的 Astro 组件(<Tabs>, <Card> 等)。由于 docmd 依赖于纯 Markdown 语法而不是 UI 组件,因此需要转换这些内容。
所需操作: 将 Astro 组件替换为 docmd 的 容器。
示例:转换标签页(Tabs)
Starlight:
import { Tabs, TabItem } from '@astrojs/starlight/components';
<Tabs>
<TabItem label="Stars">Sirius, Vega, Betelgeuse</TabItem>
<TabItem label="Moons">Io, Europa, Ganymede</TabItem>
</Tabs>
docmd:
::: tabs
== tab "Stars"
Sirius, Vega, Betelgeuse
== tab "Moons"
Io, Europa, Ganymede
:::
示例:转换提示框(Asides / Admonitions)
Starlight:
:::note[Optional Title]
Some note content.
:::
docmd:
::: note "Optional Title"
Some note content.
:::
3. Frontmatter 映射
Starlight 通过 Astro 的内容合集功能对 Frontmatter 进行了严格地类型限制。docmd 的 Frontmatter 则更加简单。
如果您在 Starlight 中的登录页面使用了 hero 或 banner 前置属性,则需要将它们替换为直接写在 Markdown 正文中的 docmd 主页横幅。
下一步
- 探索
docmd的内置 搜索插件(Starlight 使用 Pagefind,而docmd则原生提供了一个高度优化的本地搜索索引器)。