@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-лент
Иногда требуется создать несколько 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 - По умолчанию:
siteOrigin+base, либоbase, еслиsiteOriginне задан
URL сайта, на котором размещена текущая документация. Используется при формировании RSS-файла.
RSS-ссылки используются вне контекста страниц документации, поэтому укажите абсолютный URL с протоколом и доменом, например https://example.com/base/. Если задан параметр base, значение siteUrl на уровне плагина должно включать путь base.
Если в Rspress настроены параметры siteOrigin и base, параметр siteUrl на уровне плагина можно не указывать. Полный URL формируется в следующем порядке: siteOrigin + base + routePath. Если не заданы ни siteUrl на уровне плагина, ни siteOrigin, плагин использует в качестве резервного варианта значение base. Это сохраняет существующее поведение с относительными путями, но не позволяет генерировать абсолютные RSS-ссылки.
feed
- Тип:
FeedChannel | FeedChannel[] - По умолчанию:
{ id: 'blog', test: '/blog/' }
Конфигурация RSS. Передайте массив, чтобы сгенерировать несколько RSS-файлов.
Подробности — в разделе FeedChannel.
output
- Тип:
Omit<FeedOutputOptions, "filename"> - По умолчанию:
{ dir: 'rss', type: 'atom' }
Настройки вывода файлов. См. подробнее в разделе FeedOutputOptions ниже.
FeedChannel
Опции отдельной RSS-ленты.
id
- Тип:
string - Обязательный параметр
Идентификатор RSS-ленты, который должен быть уникальным среди всех RSS-настроек. Также используется как имя файла RSS по умолчанию (без расширения).
test
- Тип:
RegExp | string | (RegExp | string)[] | ((item: PageIndexInfo) => boolean) - Обязательный параметр
Выбирает документы, которые будут включены в RSS. Поддерживаемые значения:
RegExp: регулярное выражение, которое сопоставляется с маршрутом документа.string: сопоставление по префиксу маршрута документа.(item: PageIndexInfo) => boolean: фильтрация страниц на основе данных страницы и метаданных. Это также рекомендуемый способ включения по префиксу маршрута с возможностью исключать отдельные страницы, например/blog/.
item.routePath не включает путь base.
Например, если вы хотите включить только страницы статей внутри /blog/, но исключить саму индексную страницу блога:
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;
Сортирует статьи. По умолчанию сначала отображаются самые новые статьи.
transform
- Тип:
(content: string, context: { type: 'atom' | 'rss' | 'json'; feed: Feed; channel: FeedChannel }) => string | PromiseLike<string>
Преобразует финальный сгенерированный контент ленты перед записью на диск. Этот хук доступен как в опции output на уровне плагина, так и в опции output для каждой ленты, поэтому один и тот же шаблон кастомизации можно использовать для Atom, RSS и JSON Feed.
Например, следующая конфигурация добавляет пользовательский folo:id в XML-ленты и добавляет тот же идентификатор в JSON Feed:

