Astro calendar_today 23 апр. 2026 г. schedule 2 мин

Astro vs VitePress: Что выбрать для документации

Детальное сравнение Astro Starlight и VitePress для создания технической документации: производительность, поиск, кастомизация, Vue-компоненты и деплой.

person
Журналист
Автор
Astro Starlight vs VitePress — сравнение инструментов для документации

VitePress и Astro Starlight — два лидера в нише генераторов документации в 2026 году. VitePress создан командой Vue.js и используется для документации Vue, Vite, Vitest. Astro Starlight — официальное решение от команды Astro. Разбираем, что выбрать.

Что такое VitePress?

VitePress — это SSG, специально созданный для технической документации. Написан на Vue 3, работает поверх Vite. Используется для:

VitePress идеален, если ваш проект в экосистеме Vue.

Что такое Astro Starlight?

Starlight — официальный шаблон Astro для документации. Подробнее в статье Документация на Astro Starlight. Используется для:

Сравнение

ПараметрAstro StarlightVitePress
ОсноваAstroVue 3 + Vite
PageSpeed98-10088-95
JS на клиенте~20 KB~120 KB (Vue рантайм)
ПоискPagefind (встроен, офлайн)Minisearch / Algolia
i18n✅ Встроен✅ Встроен
ВерсионированиеРучное✅ Встроено (vitepress-plugin-versioning)
Dark/Light тема✅ Автоматически✅ Автоматически
UI-компонентыЛюбой фреймворк (острова)Vue компоненты
КастомизацияCSS-переменные + Astro-компонентыVue + CSS-переменные
Скорость сборкиБыстрая (Vite)Очень быстрая (Vite native)
TypeScript
Markdown расширенияMDXВстроенные контейнеры + плагины

Синтаксис: небольшие различия в Markdown

VitePress — специальные «контейнеры»:

code
::: tip Совет
Используйте это для подсказок.
:::

::: warning Предупреждение
Будьте осторожны!
:::

::: code-group

```js [config.js]
const config = { ... }
```
code
const config: Config = { ... }

:::

code

**Astro Starlight** — через MDX и специальные компоненты:

```mdx
import { Tabs, TabItem } from '@astrojs/starlight/components';

:::tip[Совет]
Используйте это для подсказок.
:::

:::caution
Будьте осторожны!
:::

<Tabs>
  <TabItem label="config.js">```js
  const config = { ... }
  ```</TabItem>
  <TabItem label="config.ts">```ts
  const config: Config = { ... }
  ```</TabItem>
</Tabs>

Поиск: принципиальное отличие

VitePress использует minisearch по умолчанию (встроен, без API). Для крупных проектов — Algolia DocSearch (требует аккаунт и синхронизацию индекса).

Astro Starlight использует Pagefind — статический поисковый движок:

  • ✅ Работает офлайн
  • ✅ Бесплатно, без аккаунтов
  • ✅ Автоматически обновляется при каждой сборке
  • ✅ Поддерживает поиск по нескольким языкам
  • ⚠️ Чуть медленнее на очень больших сайтах (> 10 000 страниц)

Кастомизация интерфейса

VitePress — через Vue-компоненты и CSS-переменные:

code
// .vitepress/theme/index.ts
import DefaultTheme from 'vitepress/theme';
import MyComponent from './MyComponent.vue';

export default {
  extends: DefaultTheme,
  enhanceApp({ app }) {
    app.component('MyComponent', MyComponent);
  },
};

Starlight — через Astro-компоненты-слоты и CSS:

code
// astro.config.mjs
starlight({
  components: {
    // Переопределить встроенные компоненты
    Header: './src/overrides/Header.astro',
    Footer: './src/overrides/Footer.astro',
  },
});

Vue-компоненты в документации

В VitePress Vue-компоненты работают нативно в Markdown — просто пишите <MyComponent />:

code
## Пример использования

<InteractiveDemo />

Выше — интерактивная демонстрация.

В Astro Starlight Vue-компоненты работают как острова через @astrojs/vue:

code
import { VueComponent } from '../components/VueComponent.vue';

<VueComponent client:visible />

Для каких проектов что подходит

Выбирайте VitePress если:

  • Проект в экосистеме Vue (Vue 3, Vite, Nuxt, Pinia)
  • Нужны нативные Vue-компоненты в документации
  • Важна максимальная скорость сборки
  • Нужно полноценное версионирование через плагин

Выбирайте Astro Starlight если:

  • Проект независим от Vue-экосистемы
  • Нужен автономный поиск (Pagefind, без Algolia)
  • Хотите использовать React/Svelte-компоненты в документации
  • Важен максимальный PageSpeed
  • Нужна мульти-фреймворк совместимость

Конфигурация: сравнение

VitePress (docs/.vitepress/config.ts):

code
import { defineConfig } from 'vitepress';

export default defineConfig({
  title: 'My Project',
  description: 'Documentation',
  themeConfig: {
    nav: [{ text: 'Guide', link: '/guide/' }],
    sidebar: {
      '/guide/': [{ text: 'Introduction', link: '/guide/' }],
    },
    socialLinks: [{ icon: 'github', link: '...' }],
  },
});

Starlight (astro.config.mjs):

code
import starlight from '@astrojs/starlight';

export default defineConfig({
  integrations: [
    starlight({
      title: 'My Project',
      description: 'Documentation',
      sidebar: [{ label: 'Guide', autogenerate: { directory: 'guide' } }],
      social: { github: '...' },
    }),
  ],
});

Итог

Оба инструмента превосходны для технической документации. VitePress — естественный выбор для Vue-проектов с отличным DX и нативными Vue-компонентами в Markdown. Astro Starlight — лучший выбор для независимых проектов, где важны PageSpeed 100, автономный поиск Pagefind и мульти-фреймворк гибкость. В 2026 году оба инструмента активно развиваются — вы не ошибётесь ни с одним.

Портрет автора Дмитрий Соколов

Senior Frontend Engineer / Tech Writer

Senior Frontend Engineer с 9-летним опытом. Специализируется на Astro.js и JAMstack.

Комментарии

Загрузка комментариев...

Оставить комментарий

Комментарии проходят модерацию перед публикацией. Правила

Рекомендуем к прочтению