Insights / Технические материалы

Миграция VitePress в Starlight: проверка Markdown, URL и Mermaid

Выбор унификации с Astro и проверка расположения Markdown, frontmatter, старых URL, рендеринга Mermaid и зависимости от CDN на примере марта 2026.

  • Технологии
  • Astro
  • Starlight
Миграция VitePress в Starlight: проверка Markdown, URL и Mermaid
Содержание
  1. Проверка совместимости на одной странице перед миграцией
  2. Зачем унифицировать фреймворки?
  3. Шаги миграции: VitePress на Starlight
  4. 1. Преобразование структуры проекта
  5. 2. Корректировка frontmatter
  6. 3. Конфигурация astro.config.mjs
  7. 4. Удаление UnoCSS
  8. Миграция диаграмм Mermaid на CDN
  9. Реализация
  10. Преимущества подхода CDN
  11. Результаты миграции
  12. Заключение

Вот пошаговое описание миграции документационного сайта VitePress на Astro + Starlight. Если ваш основной сайт работает на Astro, унификация документации под Starlight упрощает эксплуатацию. Также рассматривается миграция диаграмм Mermaid на CDN.

Проверка совместимости на одной странице перед миграцией

Сначала перенесите страницу с заголовками, ссылками, кодом и Mermaid, сравнив URL и диаграммы. Импорт CDN сам по себе не превращает блок Markdown в цель Mermaid. Нужна передача определений элементам class=“mermaid”; проверьте сгенерированный HTML перед полным переносом.

Starlight:Правила написания Markdown и HTML

Зачем унифицировать фреймворки?

Использование различных фреймворков для основного сайта и документационного сайта создаёт следующие проблемы:

  • Удвоенные затраты на обучение: Нужно разбираться и в спецификациях 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

Документы использовали vitepress-plugin-mermaid. Для единых зависимостей мы выбрали CDN в Starlight. См. официальный список плагинов: CDN не единственный вариант.

Поэтому мы перешли на загрузку 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.16.0/dist/mermaid.esm.min.mjs'
        mermaid.initialize({ startOnLoad: true })
      `,
    },
  ],
});

Блок ниже задаёт диаграмму; нужна также передача определения целевым элементам Mermaid:

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

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

  • Нулевые зависимости сборки: Mermaid как npm-пакет больше не нужен
  • Фиксация версии: Пример выбирает 11.16.0; CDN не обновляет её автоматически до последней версии
  • Не требуется SSR: Рендерится в браузере, поэтому не влияет на время сборки

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

Пункт До После
Фреймворк VitePress 1.x Astro 6 + Starlight
CSS UnoCSS Встроенные стили Starlight
Mermaid vitepress-plugin-mermaid CDN (jsdelivr)
Выходные файлы сборки docs/.vitepress/dist dist
Деплой Cloudflare Pages Cloudflare Pages (без изменений)

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

Заключение

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

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

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

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

  2. Настройка Starlight

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

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

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

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

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

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

VitePress + UnoCSS

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

Astro + Starlight

  • SSG на основе Astro
  • Встроенные стили Starlight
  • Mermaid через CDN
  • Единый фреймворк с основным сайтом

Часто задаваемые вопросы

Каковы преимущества миграции с VitePress на Starlight?

Если ваш основной сайт работает на Astro, унификация фреймворка снижает затраты на обучение, упрощает управление зависимостями и повышает согласованность конфигурации. Также можно объединить конвейеры сборки.

Как рендерятся диаграммы Mermaid?

Мы загружали Mermaid из jsdelivr и передавали определения целевым элементам. Зависимость npm исключена, но доступность CDN и совместимость версии требуют проверки.

Сколько усилий требует миграция?

Основные задачи — преобразование структуры каталогов (docs/ → src/content/docs/) и корректировка frontmatter. Поскольку сам контент в Markdown, его можно использовать как есть, что делает миграцию относительно быстрой.