Starlight 0.35

Автор
Chris Swithinbank

🌟 Starlight 0.35 — летний релиз, который делает кастомизацию документации проще, чем когда-либо.

Разберём главное в этом релизе:

Чтобы обновить существующий сайт на Starlight, используйте автоматизированный CLI @astrojs/upgrade. Он обновит Starlight, Astro и другие интеграции:

npx @astrojs/upgrade

Custom icons in asides

Asides Starlight упрощают добавление стилизованных заметок, предупреждений и других callout на страницы документации. Starlight 0.35 идёт дальше — теперь можно переопределить иконку aside.

Добавьте атрибут icon к aside для кастомизации иконки — в Markdown, MDX и Markdoc:

example.md
:::tip{icon="heart"}
Show your love with a heart icon.
:::
example.mdx
import { Aside } from '@astrojs/starlight/components';
<Aside type="tip" icon="heart">
Show your love with a heart icon.
</Aside>
example.mdoc
{% aside type="tip" icon="heart" %}
Show your love with a heart icon.
{% /aside %}

Сейчас asides можно стилизовать встроенными иконками Starlight, но мы планируем расширить это поддержкой кастомных иконок в будущем.

Спасибо Shubham Padia за эту функцию!

Starlight 0.35 добавляет поддержку применения кастомных HTML-атрибутов ко всем ссылкам в автогенерируемой группе sidebar. Это упрощает добавление стиля или поведения ко всем ссылкам в части sidebar.

Используйте новую опцию autogenerate.attrs в конфигурации sidebar. Например, можно курсивом выделить все ссылки в конкретной автогенерируемой группе:

starlight({
title: 'My docs',
sidebar: [
{
label: 'Constellations',
autogenerate: {
// Autogenerate a group of links for the 'constellations' directory.
directory: 'constellations',
// Italicize all link labels in this group.
attrs: { style: 'font-style: italic' },
},
},
],
}),

Custom page slug processing

Теперь проще настраивать, как имена файлов документации сопоставляются с URL.

По умолчанию Astro использует популярный пакет github-slugger для нормализации имён файлов контента. Например, содержимое Example.File.md доступно по /examplefile. Это обеспечивает согласованный вывод и совместимость URL со многими платформами.

Если нужна другая нормализация, передайте опцию generateId в docsLoader() Starlight в конфигурации контента. Следующий пример не нормализует имена, а только убирает расширения файлов:

src/content.config.ts
import { defineCollection } from 'astro:content';
import { docsLoader } from '@astrojs/starlight/loaders';
import { docsSchema } from '@astrojs/starlight/schema';
export const collections = {
docs: defineCollection({
loader: docsLoader({
// Remove the `.md` or `.mdx` extension, but otherwise don’t process filenames.
generateId: ({ entry }) => entry.split('.').slice(0, -1).join('.'),
}),
schema: docsSchema(),
}),
};

Bug fixes and more

Как всегда, мы исправляли ошибки и расширяли существующие функции. Changelog Starlight содержит все подробности, включая руководство по миграции для breaking changes.

Вот несколько более заметных изменений в 0.35:

Markdown plugins now limited to docs content

Markdown-контент вне коллекции src/content/docs/ Starlight больше не обрабатывается дефолтными remark и rehype плагинами Starlight. Это улучшает совместимость с сайтами, использующими Markdown на не-Starlight страницах.

Если вы полагались на прежнее поведение — напишите нам! Откройте GitHub Discussion и расскажите о вашем сценарии.

Контент, добавленный через свойство frontmatter banner Starlight, больше не индексируется дефолтным поисковым провайдером Pagefind. Это исправляет неожиданное поведение в модальном окне поиска.

Community

Команда Astro core:

Alexander Niebuhr, Ben Holmes, Caleb Jasik, Chris Swithinbank, Emanuele Stoppa, Erika, Florian Lefebvre, Fred Schott, Fuzzy, HiDeoo, Luiz Ferraz, Matt Kane, Matthew Phillips, Nate Moore, Reuben Tier, Sarah Rainsberger, and Yan Thomas.

Спасибо всем, кто внёс вклад в недавние релизы PR и ревью: Alvin Bryan, Armand Philippot, Bohdan Khodakivskyi, Bugo, Carlos Jorge Rodriguez, Cyprien AVICO, DeaM8N, Eveeifyeve, Felix Schneider, FrostyBee, Happydev, heisenberg0924, Jose Sebastian, Josh Goldberg, Junseong Park, Kevin, Kian, liruifengv, Louis Escher, Malcolm Nihlén, Martin Trapp, MathiasBuus, Matouš Kučera, Nelson-5553, Nguyen Long Nhat, Niall O’Brien, pppwaw, randomguy-2650, Randy88-art, RealRed, Renildo Pereira, Saad Khan, Sgal Cheung, Shubham Padia, techfg и Thomas Bonnet.

Ждём, что вы построите со Starlight! Вопросы, комментарии или просто «привет» — в Astro Discord.