Перейти к содержанию
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/.

# Before (VitePress)
docs/
  pages/
    index.md
    business-overview.md
    market-analysis.md

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

2. Корректировка frontmatter

VitePress и Starlight имеют немного различающиеся форматы frontmatter. Мы мигрировали конфигурацию sidebar VitePress в поле frontmatter sidebar Starlight.

# Starlight frontmatter
---
title: Business Overview
sidebar:
  order: 1
---

3. Конфигурация astro.config.mjs

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

export default defineConfig({
  integrations: [
    starlight({
      title: 'Acecore Business Plan',
      defaultLocale: 'ja',
      sidebar: [
        {
          label: 'Business Plan',
          autogenerate: { directory: '/' },
        },
      ],
    }),
  ],
})

4. Удаление UnoCSS

В среде VitePress UnoCSS использовался для пользовательских стилей, но Starlight поставляется с достаточными встроенными стилями по умолчанию. Мы удалили uno.config.ts и связанные пакеты, облегчив зависимости.

Миграция диаграмм Mermaid на CDN

В документах бизнес-плана используется Mermaid для блок-схем и организационных диаграмм. В VitePress Mermaid был интегрирован через плагин (vitepress-plugin-mermaid), но такого плагина для Starlight не существует.

Поэтому мы перешли на загрузку Mermaid с CDN на стороне браузера.

Реализация

Добавьте CDN-скрипт Mermaid в пользовательский head Starlight:

// 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 })
      `,
    },
  ],
})

Стандартный синтаксис Mermaid работает в Markdown как есть:

```mermaid
graph TD
    A[Business Plan] --> B[Market Analysis]
    A --> C[Sales Strategy]
    A --> D[Financial Plan]
```

Преимущества подхода CDN

  • Нулевые зависимости сборки: Mermaid как npm-пакет больше не нужен
  • Всегда актуальная версия: Загружается последняя версия с CDN
  • Не требуется SSR: Рендерится в браузере, поэтому не влияет на время сборки

Результаты миграции

ПунктДоПосле
ФреймворкVitePress 1.xAstro 6 + Starlight
CSSUnoCSSВстроенные стили Starlight
Mermaidvitepress-plugin-mermaidCDN (jsdelivr)
Выходные файлы сборкиdocs/.vitepress/distdist
ДеплойCloudflare PagesCloudflare Pages (без изменений)

Благодаря унификации фреймворков паттерны конфигурации astro.config.mjs и настройки деплоя могут быть общими для нескольких проектов.

Заключение

Унификация фреймворков может не быть «срочной», но чем дольше вы эксплуатируете проекты, тем больше она окупается. Сама миграция с VitePress на Starlight может быть завершена за несколько часов, а подход CDN для Mermaid фактически освобождает от управления плагинами. Если вы ведёте несколько проектов, рассмотрите унификацию технологического стека.

Процесс миграции

Анализ текущего состояния

Оценка конфигурации VitePress + UnoCSS.

Настройка Starlight

Реструктуризация проекта с Astro + Starlight.

Миграция контента

Корректировка расположения Markdown-файлов и frontmatter.

Миграция Mermaid на CDN

Устранение зависимости от плагина за счёт рендеринга диаграмм через CDN.

До и после миграции

VitePress + UnoCSS
  • SSG на основе Vue
  • Стилизация с помощью UnoCSS
  • Mermaid через плагин
  • Отдельный технологический стек от проекта Astro

Astro + Starlight
  • SSG на основе Astro
  • Встроенные стили Starlight
  • Mermaid через CDN
  • Единый фреймворк с основным сайтом
Часто задаваемые вопросы
Каковы преимущества миграции с VitePress на Starlight?
Если ваш основной сайт работает на Astro, унификация фреймворка снижает затраты на обучение, упрощает управление зависимостями и повышает согласованность конфигурации. Также можно объединить конвейеры сборки.
Как рендерятся диаграммы Mermaid?
Мы перешли от зависимости от плагина к загрузке Mermaid через CDN (jsdelivr). Это полностью устраняет зависимости сборки и обеспечивает стабильный рендеринг диаграмм.
Сколько усилий требует миграция?
Основные задачи — преобразование структуры каталогов (docs/ → src/content/docs/) и корректировка frontmatter. Поскольку сам контент в Markdown, его можно использовать как есть, что делает миграцию относительно быстрой.
G

Gui

Генеральный директор Acecore. Универсальный инженер, охватывающий разработку систем, веб-производство, управление инфраструктурой и IT-образование. Любит решать организационные и человеческие задачи с помощью технологий.

Разработка систем Веб-производство Управление инфраструктурой IT-образование

Хотите узнать больше о наших услугах?

Мы обеспечиваем комплексную поддержку: разработка систем, веб-дизайн, графический дизайн и IT-образование.

Похожие статьи

Поиск статей