@rspress/plugin-rss
Генерация RSS-лент для отдельных страниц документации с помощью библиотеки feed.
Установка
Обновление конфигурации Rspress
По умолчанию плагин генерирует файл blog.xml в папке doc_build/rss/ для всех страниц, начинающихся с /blog/.
RSS-лента будет доступна по адресу /rss/blog.xml.
Плагин работает только при выполнении rspress build и не генерирует RSS-файлы в режиме rspress dev.
Использование
Выбор страниц, включаемых в RSS
Используйте опцию feed.test, чтобы указать, какие страницы должны попасть в RSS-ленту.
Требования
Все документы, которые попадают в RSS-ленту, обязательно должны содержать в метаданных поле date или published_at. Это необходимо для стабильного обновления ленты у пользователей.
Генерация нескольких RSS-лент
Иногда требуется создать несколько RSS-файлов — например, для разных языков или категорий.
Для этого можно передать в опцию feed массив настроек. Пример:
Приведённые выше настройки создадут четыре RSS-файла: blog.xml, blog-ru.xml, rspack.xml, rsbuild.xml, все они будут находиться в папке rss.
Изменение пути вывода
Вы можете настроить путь вывода с помощью параметров output и feed.output.
См. подробности в разделе FeedOutputOptions ниже.
Подключение RSS к страницам документации
По умолчанию плагин автоматически вставляет тег <link rel="alternate"> на всех страницах, которые попали в RSS-ленту — он указывает на URL соответствующего RSS-файла. Благодаря этому RSS-ридеры смогут автоматически обнаружить ленту.
Если вы хотите добавить такой тег на страницы, которые не включены в RSS (например, на главную страницу), добавьте в блок метаданных документа поле link-rss со значением — id нужной ленты. Пример:
link-rss также поддерживает вставку нескольких тегов <link> (для разных лент) на одной странице:
Настройка содержимого RSS
RSS-файл состоит из двух основных частей:
- базовая информация о ленте —
channel; - список статей —
item.
Настроить каждую из этих частей можно так:
channelполностью настраивается через параметрfeed. Подробности — в разделе Другие опции ниже.itemполностью настраивается через параметрfeed.item. Подробности — в разделе item ниже.
Опции
PluginRssOptions
Опции плагина.
siteUrl
- Тип:
string - Обязательный параметр
URL сайта, на котором размещена текущая документация. Используется при формировании RSS-файла.
Если в проекте задан параметр base, то siteUrl должен включать этот base-путь. Пример:
feed
- Тип:
FeedChannel | FeedChannel[] - По умолчанию:
{ id: 'blog', test: '/blog/' }
Конфигурация RSS-ленты (или лент). При передаче массива будет создано несколько RSS-файлов.
Подробности — в разделе FeedChannel.
output
- Тип:
Omit<FeedOutputOptions, "filename"> - По умолчанию:
{ dir: 'rss', type: 'atom' }
Настройки вывода файлов. См. подробнее в разделе FeedOutputOptions ниже.
FeedChannel
Опции отдельной RSS-ленты.
id
- Тип:
string - Обязательный параметр
Уникальный идентификатор RSS-ленты (должен быть уникальным среди всех лент). Также используется как имя файла по умолчанию (без расширения).
test
- Тип:
RegExp | string | (RegExp | string)[] | ((item: PageIndexInfo, base: string) => boolean) - Обязательный параметр
Определяет, какие документы попадут в эту RSS-ленту. Возможные варианты:
RegExp— регулярное выражение для маршрута страницы. При наличииbaseбудет проверяться как сbase, так и без него.string— префикс маршрута страницы. При наличииbaseпроверяется сbaseи без него.(item: PageIndexInfo, base: string) => boolean— произвольная функция, позволяющая фильтровать страницы по их данным и метаполям.
item
- Тип:
(item: FeedItem, page: PageIndexInfo, siteUrl: string) => FeedItem | PromiseLike<FeedItem> - По умолчанию: описано ниже
Формирует структурированные данные каждой статьи в RSS-ленте.
См. тип структурированных данных:
Плагин имеет встроенный генератор, который использует метаданные документа и данные страницы.
Например, поле content в RSS будет отдавать приоритет summary из блока метаданных, а затем — содержимому документа.
Вы можете предоставить функцию item, чтобы изменить сгенерированные данные — они будут переданы в качестве первого параметра в вашу функцию.
Например, следующая конфигурация укорачивает содержимое статей в RSS:
Подробности о логике встроенного генератора:
output
- Тип:
FeedOutputOptions - По умолчанию: использует опцию
outputплагина
В дополнение к опции output плагина здесь есть дополнительный параметр filename для изменения имени выходного файла.
См. подробности в FeedOutputOptions ниже.
Другие опции
FeedChannel также наследует FeedOptions из пакета feed. Параметры, не перечисленные здесь, смотрите в
FeedOutputOptions
Опции вывода RSS-файлов — доступны как на верхнем уровне опций плагина, так и на уровне feed. Используют следующий тип:
Пример:
При сборке с указанными выше опциями будет создано два файла: feeds/blog.xml и releases/feed.rss.
dir
- Тип:
string - По умолчанию:
rss
Папка для размещения RSS-файлов (относительно папки doc_build).
type
- Тип:
"atom" | "rss" | "json" - По умолчанию:
atom
Формат вывода RSS-ленты. По умолчанию — atom. Описание форматов:
filename
- Тип:
string - По умолчанию: в качестве имени файла используется
idленты`; расширение определяется форматом вывода RSS
Позволяет задать полное имя выходного RSS-файла.
publicPath
- Тип:
string - По умолчанию: значение
siteUrl
Префикс URL для RSS-файла. Итоговый URL ленты формируется как publicPath + dir + filename.
sorting
- Тип:
sorting?: (left: FeedItem, right: FeedItem) => number;
Функция сортировки статей. По умолчанию — от новых к старым.

