diff --git a/packages/document/docs/en/plugin/official-plugins/rss.mdx b/packages/document/docs/en/plugin/official-plugins/rss.mdx
index 1efda962b..0cf04c604 100644
--- a/packages/document/docs/en/plugin/official-plugins/rss.mdx
+++ b/packages/document/docs/en/plugin/official-plugins/rss.mdx
@@ -22,7 +22,7 @@ export default defineConfig({
// The URL of your document site
siteUrl: 'https://example.com',
// ...more configurations below
- })
+ }),
],
});
```
@@ -44,8 +44,8 @@ Use the `feed.test` option to select which pages to be included in the RSS file.
```ts
pluginRss({
// ...
- feed: { test: '/zh/blog' }
-})
+ feed: { test: '/zh/blog' },
+});
```
### Requirements
@@ -70,11 +70,26 @@ You can provide a list of RSS options to the `feed` option. For instance:
pluginRss({
feed: [
{ id: 'blog', test: '/blog/', title: 'Rspress Blog', language: 'en-US' },
- { id: 'blog-zh', test: '/zh/blog/', title: 'Rspress 博客', language: 'zh-CN' },
- { id: 'rspack', test: ({frontmatter}) => frontmatter.categories.includes('rspack'), title: 'Rspack Releases', language: 'en-US' },
- { id: 'rsbuild', test: ({frontmatter}) => frontmatter.categories.includes('rsbuild'), title: 'Rsbuild Releases', language: 'en-US' },
- ]
-})
+ {
+ id: 'blog-zh',
+ test: '/zh/blog/',
+ title: 'Rspress 博客',
+ language: 'zh-CN',
+ },
+ {
+ id: 'rspack',
+ test: ({ frontmatter }) => frontmatter.categories.includes('rspack'),
+ title: 'Rspack Releases',
+ language: 'en-US',
+ },
+ {
+ id: 'rsbuild',
+ test: ({ frontmatter }) => frontmatter.categories.includes('rsbuild'),
+ title: 'Rsbuild Releases',
+ language: 'en-US',
+ },
+ ],
+});
```
The options above will generate four RSS files: `blog.xml`, `blog-zh.xml`, `rspack.xml`, `rsbuild.xml`, all located in the `rss` folder.
@@ -101,6 +116,16 @@ This frontmatter will insert a `` tag in the page of thi
However, this page itself will not be included in that RSS.
```
+`link-rss` also supports inserting multiple `` tags associated with feed ids on a single page:
+
+```markdown
+---
+link-rss:
+ - blog
+ - releases
+---
+```
+
### Cook the RSS content
The RSS file consists of two parts: the RSS basic information, known as the `channel` in the RSS format, and the list of articles, known as the `item` in the RSS format.
@@ -204,7 +229,10 @@ You can provide the `item` function to modify the generated data which will be p
For example, the following configuration truncates the content of articles in the RSS:
```ts
-const item: FeedChannel['item'] = (item) => ({...item, content: item.content.slice(0, 1000)});
+const item: FeedChannel['item'] = item => ({
+ ...item,
+ content: item.content.slice(0, 1000),
+});
```
For details on the logic of the built-in generator, please refer to:
@@ -229,7 +257,7 @@ Output options for RSS files, available at both the top level of the plugin opti
```ts
interface FeedOutputOptions {
dir?: string;
- type?: "atom" | "rss" | "json";
+ type?: 'atom' | 'rss' | 'json';
filename?: string;
publicPath?: string;
}
@@ -244,13 +272,25 @@ pluginRss({
// Change the output folder for RSS files to 'feeds', relative to `doc_build`
dir: 'feeds',
// Output in RSS 2.0 format, use `.rss` extension by default.
- type: 'rss'
+ type: 'rss',
},
feed: [
- { id: 'blog', test: '/blog/', title: 'My Blog', output: { type: 'atom' /* default to using `id` as the base file name */ } },
- { id: 'releases', test: '/releases/', title: 'Releases', output: { dir: 'releases', filename: 'feed.rss' } },
- ]
-})
+ {
+ id: 'blog',
+ test: '/blog/',
+ title: 'My Blog',
+ output: {
+ type: 'atom' /* default to using `id` as the base file name */,
+ },
+ },
+ {
+ id: 'releases',
+ test: '/releases/',
+ title: 'Releases',
+ output: { dir: 'releases', filename: 'feed.rss' },
+ },
+ ],
+});
```
Building with the options above will output two files: `feeds/blog.xml` and `releases/feed.rss`.
@@ -269,11 +309,11 @@ Output folder for RSS files, relative to `doc_build`.
Output format of the RSS file, `atom` by default. Details of these types:
-| Value | Format | Default Extension | MIME Type |
-|-------|-----------------------------------------------------------|-------------------|------------------------|
-| `atom` | [Atom 1.0](https://www.ietf.org/rfc/rfc4287.txt) | `.xml` | `application/atom+xml` |
-| `rss` | [RSS 2.0](https://www.rssboard.org/rss-specification) | `.rss` | `application/rss+xml` |
-| `json` | [JSON Feed 1.1](https://www.jsonfeed.org/version/1.1/) | `.json` | `application/json` |
+| Value | Format | Default Extension | MIME Type |
+| ------ | ------------------------------------------------------ | ----------------- | ---------------------- |
+| `atom` | [Atom 1.0](https://www.ietf.org/rfc/rfc4287.txt) | `.xml` | `application/atom+xml` |
+| `rss` | [RSS 2.0](https://www.rssboard.org/rss-specification) | `.rss` | `application/rss+xml` |
+| `json` | [JSON Feed 1.1](https://www.jsonfeed.org/version/1.1/) | `.json` | `application/json` |
#### `filename`
diff --git a/packages/document/docs/zh/plugin/official-plugins/rss.mdx b/packages/document/docs/zh/plugin/official-plugins/rss.mdx
index c49678f67..a817a8c99 100644
--- a/packages/document/docs/zh/plugin/official-plugins/rss.mdx
+++ b/packages/document/docs/zh/plugin/official-plugins/rss.mdx
@@ -24,7 +24,7 @@ export default defineConfig({
// 你的文档站点的 url
siteUrl: 'https://example.com',
// ...更多配置请见下文
- })
+ }),
],
});
```
@@ -44,8 +44,8 @@ export default defineConfig({
```ts
pluginRss({
// ...
- feed: { test: '/zh/blog' }
-})
+ feed: { test: '/zh/blog' },
+});
```
### 文档要求
@@ -70,11 +70,26 @@ published_at: 2024-01-10 08:00:00
pluginRss({
feed: [
{ id: 'blog', test: '/blog/', title: 'Rspress Blog', language: 'en-US' },
- { id: 'blog-zh', test: '/zh/blog/', title: 'Rspress 博客', language: 'zh-CN' },
- { id: 'rspack', test: ({frontmatter}) => frontmatter.categories.includes('rspack'), title: 'Rspack Releases', language: 'en-US' },
- { id: 'rsbuild', test: ({frontmatter}) => frontmatter.categories.includes('rsbuild'), title: 'Rsbuild Releases', language: 'en-US' },
- ]
-})
+ {
+ id: 'blog-zh',
+ test: '/zh/blog/',
+ title: 'Rspress 博客',
+ language: 'zh-CN',
+ },
+ {
+ id: 'rspack',
+ test: ({ frontmatter }) => frontmatter.categories.includes('rspack'),
+ title: 'Rspack Releases',
+ language: 'en-US',
+ },
+ {
+ id: 'rsbuild',
+ test: ({ frontmatter }) => frontmatter.categories.includes('rsbuild'),
+ title: 'Rsbuild Releases',
+ language: 'en-US',
+ },
+ ],
+});
```
以上配置会输出四个 RSS 文件,分别为 `blog.xml`、`blog-zh.xml`、`rspack.xml`、`rsbuild.xml`,均在 `rss` 文件夹中。
@@ -101,11 +116,22 @@ link-rss: blog
但这个页面自身不会被纳入该 RSS。
```
+`link-rss` 也支持在单个页面插入多个 feed id 关联的 `` 标签:
+
+```markdown
+---
+link-rss:
+ - blog
+ - releases
+---
+```
+
### 修改输出的 RSS 内容
RSS 文件由两部分组成,一部分是 RSS 的基础信息,在 RSS 格式中称为 `channel`,另一部分是文章列表,在 RSS 格式中称为 `item`。
其中:
+
- `channel` 可以由 `feed` 这个参数完全控制,请参考下文的 [其他参数](#其他参数)。
- `item` 可以由 `feed.item` 这个参数完全控制,请参考下文的 [item](#item)。
@@ -197,7 +223,10 @@ RSS 的 ID,在多个 RSS 配置中唯一。同时也是该 RSS 文件的默认
你可以传入一个函数来修改内置逻辑生成的数据,该数据会作为第一个参数传给你传入的这个函数。比如下方配置可以截断 RSS 中的文章内容:
```ts
-const item: FeedChannel['item'] = (item) => ({...item, content: item.content.slice(0, 1000)});
+const item: FeedChannel['item'] = item => ({
+ ...item,
+ content: item.content.slice(0, 1000),
+});
```
默认逻辑详情请参考:
@@ -222,7 +251,7 @@ RSS 的输出配置,在插件参数顶层和 `feed` 这一层都有该配置
```ts
interface FeedOutputOptions {
dir?: string;
- type?: "atom" | "rss" | "json";
+ type?: 'atom' | 'rss' | 'json';
filename?: string;
publicPath?: string;
}
@@ -237,13 +266,23 @@ pluginRss({
// 将 RSS 文件输出文件夹改为 `feeds`,该值为相对于 `doc_build` 的位置
dir: 'feeds',
// 输出为 RSS 2.0 格式,默认为 .rss 后缀。
- type: 'rss'
+ type: 'rss',
},
feed: [
- { id: 'blog', test: '/blog/', title: 'My Blog', output: { type: 'atom' /* 默认会以 `id` 作为基础文件名 */ } },
- { id: 'releases', test: '/releases/', title: 'Releases', output: { dir: 'releases', filename: 'feed.rss' } },
- ]
-})
+ {
+ id: 'blog',
+ test: '/blog/',
+ title: 'My Blog',
+ output: { type: 'atom' /* 默认会以 `id` 作为基础文件名 */ },
+ },
+ {
+ id: 'releases',
+ test: '/releases/',
+ title: 'Releases',
+ output: { dir: 'releases', filename: 'feed.rss' },
+ },
+ ],
+});
```
以上配置将输出 `feeds/blog.xml`、`releases/feed.rss` 两个文件。
@@ -262,11 +301,11 @@ RSS 文件的输出文件夹,相对于 `doc_build` 的相对位置。
修改 RSS 文件的输出格式,默认为 `atom`。不同类型的说明如下:
-| 值 | 格式 | 默认后缀名 | MIME Type |
-|---|-------------------------------------------------------|--------|---|
-| `atom` | [Atom 1.0](https://www.ietf.org/rfc/rfc4287.txt) | `.xml` | `application/atom+xml` |
-| `rss` | [RSS 2.0](https://www.rssboard.org/rss-specification) | `.rss` | `application/rss+xml` |
-| `json` | [JSON Feed 1.1](https://www.jsonfeed.org/version/1.1/) | `.json` | `application/json` |
+| 值 | 格式 | 默认后缀名 | MIME Type |
+| ------ | ------------------------------------------------------ | ---------- | ---------------------- |
+| `atom` | [Atom 1.0](https://www.ietf.org/rfc/rfc4287.txt) | `.xml` | `application/atom+xml` |
+| `rss` | [RSS 2.0](https://www.rssboard.org/rss-specification) | `.rss` | `application/rss+xml` |
+| `json` | [JSON Feed 1.1](https://www.jsonfeed.org/version/1.1/) | `.json` | `application/json` |
#### `filename`