跳至正文
Acecore

从 VitePress 迁移到 Starlight ― 统一文档站点的框架

by Gui
目录
从 VitePress 迁移到 Starlight ― 统一文档站点的框架

本文总结了将使用 VitePress 创建的文档站点迁移到 Astro + Starlight 的步骤。如果主站使用 Astro,将文档也统一到 Starlight 可以简化运维。同时也介绍了 Mermaid 图表的 CDN 迁移。

为什么要统一框架

当主站和文档站点使用不同的框架时,会出现以下问题:

  • 学习成本翻倍:需要同时掌握 VitePress 和 Astro 的规范
  • 依赖分散:需要在两套系统中管理 npm 包的更新
  • 配置不一致:需要分别维护 ESLint、Prettier、部署配置等

统一到 Astro + Starlight 后,可以共享配置文件模式和故障排除经验。

从 VitePress 迁移到 Starlight 的步骤

1. 项目结构转换

VitePress 将文档放在 docs/ 目录,Starlight 放在 src/content/docs/

# 变更前(VitePress)
docs/
  pages/
    index.md
    business-overview.md
    market-analysis.md

# 变更后(Starlight)
src/
  content/
    docs/
      index.md
      business-overview.md
      market-analysis.md

2. 调整 frontmatter

VitePress 和 Starlight 的 frontmatter 格式略有不同。将 VitePress 的 sidebar 配置迁移到 frontmatter 的 sidebar 字段。

# Starlight 的 frontmatter
---
title: 事業概要
sidebar:
  order: 1
---

3. astro.config.mjs 的配置

import { defineConfig } from 'astro/config'
import starlight from '@astrojs/starlight'

export default defineConfig({
  integrations: [
    starlight({
      title: 'Acecore 事業計画',
      defaultLocale: 'ja',
      sidebar: [
        {
          label: '事業計画',
          autogenerate: { directory: '/' },
        },
      ],
    }),
  ],
})

4. 移除 UnoCSS

VitePress 环境中使用 UnoCSS 应用自定义样式,但 Starlight 内置了完善的默认样式。删除 uno.config.ts 及相关包,精简依赖。

Mermaid 图表的 CDN 迁移

事业计划文档中使用 Mermaid 编写了流程图和组织架构图。VitePress 通过插件(vitepress-plugin-mermaid)集成 Mermaid,但 Starlight 没有类似的插件。

因此改为在浏览器端通过 CDN 加载 Mermaid。

实现方法

在 Starlight 的自定义 head 中添加 Mermaid 的 CDN 脚本。

// astro.config.mjs
starlight({
  head: [
    {
      tag: 'script',
      attrs: { type: 'module' },
      content: `
        import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs'
        mermaid.initialize({ startOnLoad: true })
      `,
    },
  ],
})

Markdown 中可以直接使用常规的 Mermaid 语法:

```mermaid
graph TD
    A[事業計画] --> B[市場分析]
    A --> C[販売戦略]
    A --> D[財務計画]
```

CDN 方式的优势

  • 零构建依赖:不需要将 Mermaid 作为 npm 包安装
  • 始终使用最新版本:从 CDN 获取最新版
  • 无需 SSR:在浏览器端渲染,不影响构建时间

迁移结果

项目BeforeAfter
框架VitePress 1.xAstro 6 + Starlight
CSSUnoCSSStarlight 内置
Mermaidvitepress-plugin-mermaidCDN(jsdelivr)
构建输出目录docs/.vitepress/distdist
部署目标Cloudflare PagesCloudflare Pages(未变更)

通过统一框架,可以在多个项目间共享 astro.config.mjs 的配置模式和部署配置。

总结

框架统一即使”不是马上需要”,随着运维时间的增长也会逐渐发挥效果。从 VitePress 迁移到 Starlight 本身可以在几小时内完成,Mermaid 的 CDN 化反而带来了从插件管理中解放的好处。如果您正在运维多个项目,不妨考虑统一技术栈。

迁移流程

现状分析

梳理 VitePress + UnoCSS 的架构。

引入 Starlight

使用 Astro + Starlight 重新构建项目。

内容迁移

调整 Markdown 文件的目录布局和 frontmatter。

Mermaid CDN 化

移除插件依赖,通过 CDN 渲染图表。

迁移前后的对比

VitePress + UnoCSS
  • 基于 Vue 的 SSG
  • 使用 UnoCSS 进行样式设计
  • Mermaid 通过插件运行
  • 与 Astro 项目使用不同的技术栈

Astro + Starlight
  • 基于 Astro 的 SSG
  • 使用 Starlight 内置样式
  • Mermaid 通过 CDN 运行
  • 与主站统一框架
常见问题
从 VitePress 迁移到 Starlight 有什么好处?
如果主站使用 Astro,统一框架可以降低学习成本、简化依赖管理并提高配置的一致性。构建流水线也可以统一。
Mermaid 图表是如何显示的?
我们放弃了插件依赖,改为通过 CDN(jsdelivr)加载 Mermaid。构建依赖降为零,图表渲染也更加稳定。
迁移工作需要多少工作量?
主要工作是目录结构的转换(docs/ → src/content/docs/)和 frontmatter 的调整。由于内容本身是 Markdown,可以直接使用,因此迁移可以在较短时间内完成。
G

Gui

Acecore 代表。从系统开发、Web制作、基础设施运维到IT教育,涉猎广泛的工程师。 喜欢用技术解决人和组织的课题。

系统开发 Web制作 基础设施运维 IT教育

想了解更多关于我们的服务?

我们提供系统开发、网站设计、平面设计、IT教育等全方位支持。

相关文章

搜索文章