mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-10 06:42:31 +02:00
feat(docs, blog): add support for tags.yml
, predefined list of tags (#10137)
Co-authored-by: Sébastien Lorber <slorber@users.noreply.github.com> Co-authored-by: OzakIOne <OzakIOne@users.noreply.github.com> Co-authored-by: sebastien <lorber.sebastien@gmail.com> Co-authored-by: slorber <slorber@users.noreply.github.com>
This commit is contained in:
parent
1049294ba6
commit
0eb7b64aac
63 changed files with 2597 additions and 722 deletions
|
@ -3,7 +3,7 @@ title: Happy 1st Birthday Slash!
|
|||
authors:
|
||||
- name: Yangshun Tay
|
||||
- slorber
|
||||
tags: [birthday]
|
||||
tags: [birthday,inlineTag,globalTag]
|
||||
---
|
||||
|
||||
Happy birthday!
|
||||
|
|
5
packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/blog/tags.yml
generated
Normal file
5
packages/docusaurus-plugin-content-blog/src/__tests__/__fixtures__/website/blog/tags.yml
generated
Normal file
|
@ -0,0 +1,5 @@
|
|||
|
||||
globalTag:
|
||||
label: 'Global Tag label'
|
||||
description: 'Global Tag description'
|
||||
permalink: '/tags/global-tag-permalink'
|
|
@ -3,6 +3,7 @@ title: Happy 1st Birthday Slash! (translated)
|
|||
authors:
|
||||
- name: Yangshun Tay (translated)
|
||||
- slorber
|
||||
tags: [inlineTag,globalTag]
|
||||
---
|
||||
|
||||
Happy birthday! (translated)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
globalTag:
|
||||
label: 'Global Tag label (en)'
|
||||
description: 'Global Tag description (en)'
|
||||
permalink: 'global-tag-permalink (en)'
|
|
@ -92,134 +92,6 @@ exports[`atom filters to the first two entries using limit 1`] = `
|
|||
]
|
||||
`;
|
||||
|
||||
exports[`atom has feed item for each post 1`] = `
|
||||
[
|
||||
"<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<id>https://docusaurus.io/myBaseUrl/blog</id>
|
||||
<title>Hello Blog</title>
|
||||
<updated>2023-07-23T00:00:00.000Z</updated>
|
||||
<generator>https://github.com/jpmonette/feed</generator>
|
||||
<link rel="alternate" href="https://docusaurus.io/myBaseUrl/blog"/>
|
||||
<subtitle>Hello Blog</subtitle>
|
||||
<icon>https://docusaurus.io/myBaseUrl/image/favicon.ico</icon>
|
||||
<rights>Copyright</rights>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[test links]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/blog-with-links</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/blog-with-links"/>
|
||||
<updated>2023-07-23T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[absolute full url]]></summary>
|
||||
<content type="html"><![CDATA[<p><a href="https://github.com/facebook/docusaurus" target="_blank" rel="noopener noreferrer">absolute full url</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">absolute pathname</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">relative pathname</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">md link</a></p>
|
||||
<p><a href="https://docusaurus.io/myBaseUrl/blog/blog-with-links#title">anchor</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title#title">relative pathname + anchor</a></p>
|
||||
<p><img loading="lazy" src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png" width="760" height="160" class="img_yGFe"></p>
|
||||
<p><img loading="lazy" src="https://docusaurus.io/assets/images/slash-introducing-411a16dd05086935b8e9ddae38ae9b45.svg" alt="" class="img_yGFe"></p>
|
||||
<img srcset="https://docusaurus.io/img/test-image.png 300w, https://docusaurus.io/img/docusaurus-social-card.png 500w">
|
||||
<img src="https://docusaurus.io/img/test-image.png">]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[MDX Blog Sample with require calls]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post"/>
|
||||
<updated>2021-03-06T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[Test MDX with require calls]]></summary>
|
||||
<content type="html"><![CDATA[<p>Test MDX with require calls</p>
|
||||
<!-- -->
|
||||
<!-- -->
|
||||
<img src="https://docusaurus.io/img/test-image.png">
|
||||
<img src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png">
|
||||
<img src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png">]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Full Blog Sample]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/mdx-blog-post</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post"/>
|
||||
<updated>2021-03-05T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[HTML Heading 1]]></summary>
|
||||
<content type="html"><![CDATA[<h1>HTML Heading 1</h1>
|
||||
<h2>HTML Heading 2</h2>
|
||||
<p>HTML Paragraph</p>
|
||||
<!-- -->
|
||||
<!-- -->
|
||||
<p>Import DOM</p>
|
||||
<h1>Heading 1</h1>
|
||||
<h2 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-2">Heading 2<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-2" class="hash-link" aria-label="Direct link to Heading 2" title="Direct link to Heading 2"></a></h2>
|
||||
<h3 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-3">Heading 3<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-3" class="hash-link" aria-label="Direct link to Heading 3" title="Direct link to Heading 3"></a></h3>
|
||||
<h4 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-4">Heading 4<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-4" class="hash-link" aria-label="Direct link to Heading 4" title="Direct link to Heading 4"></a></h4>
|
||||
<h5 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-5">Heading 5<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-5" class="hash-link" aria-label="Direct link to Heading 5" title="Direct link to Heading 5"></a></h5>
|
||||
<ul>
|
||||
<li>list1</li>
|
||||
<li>list2</li>
|
||||
<li>list3</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>list1</li>
|
||||
<li>list2</li>
|
||||
<li>list3</li>
|
||||
</ul>
|
||||
<p>Normal Text <em>Italics Text</em> <strong>Bold Text</strong></p>
|
||||
<p><a href="https://v2.docusaurus.io/" target="_blank" rel="noopener noreferrer">link</a> <img loading="lazy" src="https://v2.docusaurus.io/" alt="image" class="img_yGFe"></p>]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Complex Slug]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô"/>
|
||||
<updated>2020-08-16T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[complex url slug]]></summary>
|
||||
<content type="html"><![CDATA[<p>complex url slug</p>]]></content>
|
||||
<category label="date" term="date"/>
|
||||
<category label="complex" term="complex"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Simple Slug]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/simple/slug</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/simple/slug"/>
|
||||
<updated>2020-08-15T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[simple url slug]]></summary>
|
||||
<content type="html"><![CDATA[<p>simple url slug</p>]]></content>
|
||||
<author>
|
||||
<name>Sébastien Lorber</name>
|
||||
<uri>https://sebastienlorber.com</uri>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[some heading]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/heading-as-title</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/heading-as-title"/>
|
||||
<updated>2019-01-02T00:00:00.000Z</updated>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[date-matter]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/date-matter</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/date-matter"/>
|
||||
<updated>2019-01-01T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[date inside front matter]]></summary>
|
||||
<content type="html"><![CDATA[<p>date inside front matter</p>]]></content>
|
||||
<category label="date" term="date"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Happy 1st Birthday Slash! (translated)]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash"/>
|
||||
<updated>2018-12-14T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[Happy birthday! (translated)]]></summary>
|
||||
<content type="html"><![CDATA[<p>Happy birthday! (translated)</p>]]></content>
|
||||
<author>
|
||||
<name>Yangshun Tay (translated)</name>
|
||||
</author>
|
||||
<author>
|
||||
<name>Sébastien Lorber (translated)</name>
|
||||
<email>lorber.sebastien@gmail.com</email>
|
||||
</author>
|
||||
</entry>
|
||||
</feed>",
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`atom has feed item for each post - with trailing slash 1`] = `
|
||||
[
|
||||
"<?xml version="1.0" encoding="utf-8"?>
|
||||
|
@ -343,6 +215,138 @@ exports[`atom has feed item for each post - with trailing slash 1`] = `
|
|||
<name>Sébastien Lorber (translated)</name>
|
||||
<email>lorber.sebastien@gmail.com</email>
|
||||
</author>
|
||||
<category label="inlineTag" term="inlineTag"/>
|
||||
<category label="Global Tag label (en)" term="Global Tag label (en)"/>
|
||||
</entry>
|
||||
</feed>",
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`atom has feed item for each post 1`] = `
|
||||
[
|
||||
"<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
<id>https://docusaurus.io/myBaseUrl/blog</id>
|
||||
<title>Hello Blog</title>
|
||||
<updated>2023-07-23T00:00:00.000Z</updated>
|
||||
<generator>https://github.com/jpmonette/feed</generator>
|
||||
<link rel="alternate" href="https://docusaurus.io/myBaseUrl/blog"/>
|
||||
<subtitle>Hello Blog</subtitle>
|
||||
<icon>https://docusaurus.io/myBaseUrl/image/favicon.ico</icon>
|
||||
<rights>Copyright</rights>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[test links]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/blog-with-links</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/blog-with-links"/>
|
||||
<updated>2023-07-23T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[absolute full url]]></summary>
|
||||
<content type="html"><![CDATA[<p><a href="https://github.com/facebook/docusaurus" target="_blank" rel="noopener noreferrer">absolute full url</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">absolute pathname</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">relative pathname</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">md link</a></p>
|
||||
<p><a href="https://docusaurus.io/myBaseUrl/blog/blog-with-links#title">anchor</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title#title">relative pathname + anchor</a></p>
|
||||
<p><img loading="lazy" src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png" width="760" height="160" class="img_yGFe"></p>
|
||||
<p><img loading="lazy" src="https://docusaurus.io/assets/images/slash-introducing-411a16dd05086935b8e9ddae38ae9b45.svg" alt="" class="img_yGFe"></p>
|
||||
<img srcset="https://docusaurus.io/img/test-image.png 300w, https://docusaurus.io/img/docusaurus-social-card.png 500w">
|
||||
<img src="https://docusaurus.io/img/test-image.png">]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[MDX Blog Sample with require calls]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post"/>
|
||||
<updated>2021-03-06T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[Test MDX with require calls]]></summary>
|
||||
<content type="html"><![CDATA[<p>Test MDX with require calls</p>
|
||||
<!-- -->
|
||||
<!-- -->
|
||||
<img src="https://docusaurus.io/img/test-image.png">
|
||||
<img src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png">
|
||||
<img src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png">]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Full Blog Sample]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/mdx-blog-post</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post"/>
|
||||
<updated>2021-03-05T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[HTML Heading 1]]></summary>
|
||||
<content type="html"><![CDATA[<h1>HTML Heading 1</h1>
|
||||
<h2>HTML Heading 2</h2>
|
||||
<p>HTML Paragraph</p>
|
||||
<!-- -->
|
||||
<!-- -->
|
||||
<p>Import DOM</p>
|
||||
<h1>Heading 1</h1>
|
||||
<h2 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-2">Heading 2<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-2" class="hash-link" aria-label="Direct link to Heading 2" title="Direct link to Heading 2"></a></h2>
|
||||
<h3 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-3">Heading 3<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-3" class="hash-link" aria-label="Direct link to Heading 3" title="Direct link to Heading 3"></a></h3>
|
||||
<h4 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-4">Heading 4<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-4" class="hash-link" aria-label="Direct link to Heading 4" title="Direct link to Heading 4"></a></h4>
|
||||
<h5 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-5">Heading 5<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-5" class="hash-link" aria-label="Direct link to Heading 5" title="Direct link to Heading 5"></a></h5>
|
||||
<ul>
|
||||
<li>list1</li>
|
||||
<li>list2</li>
|
||||
<li>list3</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>list1</li>
|
||||
<li>list2</li>
|
||||
<li>list3</li>
|
||||
</ul>
|
||||
<p>Normal Text <em>Italics Text</em> <strong>Bold Text</strong></p>
|
||||
<p><a href="https://v2.docusaurus.io/" target="_blank" rel="noopener noreferrer">link</a> <img loading="lazy" src="https://v2.docusaurus.io/" alt="image" class="img_yGFe"></p>]]></content>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Complex Slug]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô"/>
|
||||
<updated>2020-08-16T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[complex url slug]]></summary>
|
||||
<content type="html"><![CDATA[<p>complex url slug</p>]]></content>
|
||||
<category label="date" term="date"/>
|
||||
<category label="complex" term="complex"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Simple Slug]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/simple/slug</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/simple/slug"/>
|
||||
<updated>2020-08-15T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[simple url slug]]></summary>
|
||||
<content type="html"><![CDATA[<p>simple url slug</p>]]></content>
|
||||
<author>
|
||||
<name>Sébastien Lorber</name>
|
||||
<uri>https://sebastienlorber.com</uri>
|
||||
</author>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[some heading]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/heading-as-title</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/heading-as-title"/>
|
||||
<updated>2019-01-02T00:00:00.000Z</updated>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[date-matter]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/date-matter</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/date-matter"/>
|
||||
<updated>2019-01-01T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[date inside front matter]]></summary>
|
||||
<content type="html"><![CDATA[<p>date inside front matter</p>]]></content>
|
||||
<category label="date" term="date"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<title type="html"><![CDATA[Happy 1st Birthday Slash! (translated)]]></title>
|
||||
<id>https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash</id>
|
||||
<link href="https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash"/>
|
||||
<updated>2018-12-14T00:00:00.000Z</updated>
|
||||
<summary type="html"><![CDATA[Happy birthday! (translated)]]></summary>
|
||||
<content type="html"><![CDATA[<p>Happy birthday! (translated)</p>]]></content>
|
||||
<author>
|
||||
<name>Yangshun Tay (translated)</name>
|
||||
</author>
|
||||
<author>
|
||||
<name>Sébastien Lorber (translated)</name>
|
||||
<email>lorber.sebastien@gmail.com</email>
|
||||
</author>
|
||||
<category label="inlineTag" term="inlineTag"/>
|
||||
<category label="Global Tag label (en)" term="Global Tag label (en)"/>
|
||||
</entry>
|
||||
</feed>",
|
||||
]
|
||||
|
@ -410,102 +414,6 @@ exports[`json filters to the first two entries using limit 1`] = `
|
|||
]
|
||||
`;
|
||||
|
||||
exports[`json has feed item for each post 1`] = `
|
||||
[
|
||||
"{
|
||||
"version": "https://jsonfeed.org/version/1",
|
||||
"title": "Hello Blog",
|
||||
"home_page_url": "https://docusaurus.io/myBaseUrl/blog",
|
||||
"description": "Hello Blog",
|
||||
"items": [
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/blog-with-links",
|
||||
"content_html": "<p><a href=\\"https://github.com/facebook/docusaurus\\" target=\\"_blank\\" rel=\\"noopener noreferrer\\">absolute full url</a></p>/n<p><a href=\\"https://docusaurus.io/blog/heading-as-title\\">absolute pathname</a></p>/n<p><a href=\\"https://docusaurus.io/blog/heading-as-title\\">relative pathname</a></p>/n<p><a href=\\"https://docusaurus.io/blog/heading-as-title\\">md link</a></p>/n<p><a href=\\"https://docusaurus.io/myBaseUrl/blog/blog-with-links#title\\">anchor</a></p>/n<p><a href=\\"https://docusaurus.io/blog/heading-as-title#title\\">relative pathname + anchor</a></p>/n<p><img loading=\\"lazy\\" src=\\"https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png\\" width=\\"760\\" height=\\"160\\" class=\\"img_yGFe\\"></p>/n<p><img loading=\\"lazy\\" src=\\"https://docusaurus.io/assets/images/slash-introducing-411a16dd05086935b8e9ddae38ae9b45.svg\\" alt=\\"\\" class=\\"img_yGFe\\"></p>/n<img srcset=\\"https://docusaurus.io/img/test-image.png 300w, https://docusaurus.io/img/docusaurus-social-card.png 500w\\">/n<img src=\\"https://docusaurus.io/img/test-image.png\\">",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/blog-with-links",
|
||||
"title": "test links",
|
||||
"summary": "absolute full url",
|
||||
"date_modified": "2023-07-23T00:00:00.000Z",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post",
|
||||
"content_html": "<p>Test MDX with require calls</p>/n<!-- -->/n<!-- -->/n<img src=\\"https://docusaurus.io/img/test-image.png\\">/n<img src=\\"https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png\\">/n<img src=\\"https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png\\">",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post",
|
||||
"title": "MDX Blog Sample with require calls",
|
||||
"summary": "Test MDX with require calls",
|
||||
"date_modified": "2021-03-06T00:00:00.000Z",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/mdx-blog-post",
|
||||
"content_html": "<h1>HTML Heading 1</h1>/n<h2>HTML Heading 2</h2>/n<p>HTML Paragraph</p>/n<!-- -->/n<!-- -->/n<p>Import DOM</p>/n<h1>Heading 1</h1>/n<h2 class=\\"anchor anchorWithHideOnScrollNavbar_G5V2\\" id=\\"heading-2\\">Heading 2<a href=\\"https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-2\\" class=\\"hash-link\\" aria-label=\\"Direct link to Heading 2\\" title=\\"Direct link to Heading 2\\"></a></h2>/n<h3 class=\\"anchor anchorWithHideOnScrollNavbar_G5V2\\" id=\\"heading-3\\">Heading 3<a href=\\"https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-3\\" class=\\"hash-link\\" aria-label=\\"Direct link to Heading 3\\" title=\\"Direct link to Heading 3\\"></a></h3>/n<h4 class=\\"anchor anchorWithHideOnScrollNavbar_G5V2\\" id=\\"heading-4\\">Heading 4<a href=\\"https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-4\\" class=\\"hash-link\\" aria-label=\\"Direct link to Heading 4\\" title=\\"Direct link to Heading 4\\"></a></h4>/n<h5 class=\\"anchor anchorWithHideOnScrollNavbar_G5V2\\" id=\\"heading-5\\">Heading 5<a href=\\"https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-5\\" class=\\"hash-link\\" aria-label=\\"Direct link to Heading 5\\" title=\\"Direct link to Heading 5\\"></a></h5>/n<ul>/n<li>list1</li>/n<li>list2</li>/n<li>list3</li>/n</ul>/n<ul>/n<li>list1</li>/n<li>list2</li>/n<li>list3</li>/n</ul>/n<p>Normal Text <em>Italics Text</em> <strong>Bold Text</strong></p>/n<p><a href=\\"https://v2.docusaurus.io/\\" target=\\"_blank\\" rel=\\"noopener noreferrer\\">link</a> <img loading=\\"lazy\\" src=\\"https://v2.docusaurus.io/\\" alt=\\"image\\" class=\\"img_yGFe\\"></p>",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/mdx-blog-post",
|
||||
"title": "Full Blog Sample",
|
||||
"summary": "HTML Heading 1",
|
||||
"date_modified": "2021-03-05T00:00:00.000Z",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô",
|
||||
"content_html": "<p>complex url slug</p>",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô",
|
||||
"title": "Complex Slug",
|
||||
"summary": "complex url slug",
|
||||
"date_modified": "2020-08-16T00:00:00.000Z",
|
||||
"tags": [
|
||||
"date",
|
||||
"complex"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/simple/slug",
|
||||
"content_html": "<p>simple url slug</p>",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/simple/slug",
|
||||
"title": "Simple Slug",
|
||||
"summary": "simple url slug",
|
||||
"date_modified": "2020-08-15T00:00:00.000Z",
|
||||
"author": {
|
||||
"name": "Sébastien Lorber",
|
||||
"url": "https://sebastienlorber.com"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/heading-as-title",
|
||||
"content_html": "",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/heading-as-title",
|
||||
"title": "some heading",
|
||||
"date_modified": "2019-01-02T00:00:00.000Z",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/date-matter",
|
||||
"content_html": "<p>date inside front matter</p>",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/date-matter",
|
||||
"title": "date-matter",
|
||||
"summary": "date inside front matter",
|
||||
"date_modified": "2019-01-01T00:00:00.000Z",
|
||||
"tags": [
|
||||
"date"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash",
|
||||
"content_html": "<p>Happy birthday! (translated)</p>",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash",
|
||||
"title": "Happy 1st Birthday Slash! (translated)",
|
||||
"summary": "Happy birthday! (translated)",
|
||||
"date_modified": "2018-12-14T00:00:00.000Z",
|
||||
"author": {
|
||||
"name": "Yangshun Tay (translated)"
|
||||
},
|
||||
"tags": []
|
||||
}
|
||||
]
|
||||
}",
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`json has feed item for each post - with trailing slash 1`] = `
|
||||
[
|
||||
"{
|
||||
|
@ -595,7 +503,109 @@ exports[`json has feed item for each post - with trailing slash 1`] = `
|
|||
"author": {
|
||||
"name": "Yangshun Tay (translated)"
|
||||
},
|
||||
"tags": [
|
||||
"inlineTag",
|
||||
"Global Tag label (en)"
|
||||
]
|
||||
}
|
||||
]
|
||||
}",
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`json has feed item for each post 1`] = `
|
||||
[
|
||||
"{
|
||||
"version": "https://jsonfeed.org/version/1",
|
||||
"title": "Hello Blog",
|
||||
"home_page_url": "https://docusaurus.io/myBaseUrl/blog",
|
||||
"description": "Hello Blog",
|
||||
"items": [
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/blog-with-links",
|
||||
"content_html": "<p><a href=\\"https://github.com/facebook/docusaurus\\" target=\\"_blank\\" rel=\\"noopener noreferrer\\">absolute full url</a></p>/n<p><a href=\\"https://docusaurus.io/blog/heading-as-title\\">absolute pathname</a></p>/n<p><a href=\\"https://docusaurus.io/blog/heading-as-title\\">relative pathname</a></p>/n<p><a href=\\"https://docusaurus.io/blog/heading-as-title\\">md link</a></p>/n<p><a href=\\"https://docusaurus.io/myBaseUrl/blog/blog-with-links#title\\">anchor</a></p>/n<p><a href=\\"https://docusaurus.io/blog/heading-as-title#title\\">relative pathname + anchor</a></p>/n<p><img loading=\\"lazy\\" src=\\"https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png\\" width=\\"760\\" height=\\"160\\" class=\\"img_yGFe\\"></p>/n<p><img loading=\\"lazy\\" src=\\"https://docusaurus.io/assets/images/slash-introducing-411a16dd05086935b8e9ddae38ae9b45.svg\\" alt=\\"\\" class=\\"img_yGFe\\"></p>/n<img srcset=\\"https://docusaurus.io/img/test-image.png 300w, https://docusaurus.io/img/docusaurus-social-card.png 500w\\">/n<img src=\\"https://docusaurus.io/img/test-image.png\\">",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/blog-with-links",
|
||||
"title": "test links",
|
||||
"summary": "absolute full url",
|
||||
"date_modified": "2023-07-23T00:00:00.000Z",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post",
|
||||
"content_html": "<p>Test MDX with require calls</p>/n<!-- -->/n<!-- -->/n<img src=\\"https://docusaurus.io/img/test-image.png\\">/n<img src=\\"https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png\\">/n<img src=\\"https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png\\">",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post",
|
||||
"title": "MDX Blog Sample with require calls",
|
||||
"summary": "Test MDX with require calls",
|
||||
"date_modified": "2021-03-06T00:00:00.000Z",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/mdx-blog-post",
|
||||
"content_html": "<h1>HTML Heading 1</h1>/n<h2>HTML Heading 2</h2>/n<p>HTML Paragraph</p>/n<!-- -->/n<!-- -->/n<p>Import DOM</p>/n<h1>Heading 1</h1>/n<h2 class=\\"anchor anchorWithHideOnScrollNavbar_G5V2\\" id=\\"heading-2\\">Heading 2<a href=\\"https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-2\\" class=\\"hash-link\\" aria-label=\\"Direct link to Heading 2\\" title=\\"Direct link to Heading 2\\"></a></h2>/n<h3 class=\\"anchor anchorWithHideOnScrollNavbar_G5V2\\" id=\\"heading-3\\">Heading 3<a href=\\"https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-3\\" class=\\"hash-link\\" aria-label=\\"Direct link to Heading 3\\" title=\\"Direct link to Heading 3\\"></a></h3>/n<h4 class=\\"anchor anchorWithHideOnScrollNavbar_G5V2\\" id=\\"heading-4\\">Heading 4<a href=\\"https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-4\\" class=\\"hash-link\\" aria-label=\\"Direct link to Heading 4\\" title=\\"Direct link to Heading 4\\"></a></h4>/n<h5 class=\\"anchor anchorWithHideOnScrollNavbar_G5V2\\" id=\\"heading-5\\">Heading 5<a href=\\"https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-5\\" class=\\"hash-link\\" aria-label=\\"Direct link to Heading 5\\" title=\\"Direct link to Heading 5\\"></a></h5>/n<ul>/n<li>list1</li>/n<li>list2</li>/n<li>list3</li>/n</ul>/n<ul>/n<li>list1</li>/n<li>list2</li>/n<li>list3</li>/n</ul>/n<p>Normal Text <em>Italics Text</em> <strong>Bold Text</strong></p>/n<p><a href=\\"https://v2.docusaurus.io/\\" target=\\"_blank\\" rel=\\"noopener noreferrer\\">link</a> <img loading=\\"lazy\\" src=\\"https://v2.docusaurus.io/\\" alt=\\"image\\" class=\\"img_yGFe\\"></p>",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/mdx-blog-post",
|
||||
"title": "Full Blog Sample",
|
||||
"summary": "HTML Heading 1",
|
||||
"date_modified": "2021-03-05T00:00:00.000Z",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô",
|
||||
"content_html": "<p>complex url slug</p>",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô",
|
||||
"title": "Complex Slug",
|
||||
"summary": "complex url slug",
|
||||
"date_modified": "2020-08-16T00:00:00.000Z",
|
||||
"tags": [
|
||||
"date",
|
||||
"complex"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/simple/slug",
|
||||
"content_html": "<p>simple url slug</p>",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/simple/slug",
|
||||
"title": "Simple Slug",
|
||||
"summary": "simple url slug",
|
||||
"date_modified": "2020-08-15T00:00:00.000Z",
|
||||
"author": {
|
||||
"name": "Sébastien Lorber",
|
||||
"url": "https://sebastienlorber.com"
|
||||
},
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/heading-as-title",
|
||||
"content_html": "",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/heading-as-title",
|
||||
"title": "some heading",
|
||||
"date_modified": "2019-01-02T00:00:00.000Z",
|
||||
"tags": []
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/date-matter",
|
||||
"content_html": "<p>date inside front matter</p>",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/date-matter",
|
||||
"title": "date-matter",
|
||||
"summary": "date inside front matter",
|
||||
"date_modified": "2019-01-01T00:00:00.000Z",
|
||||
"tags": [
|
||||
"date"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash",
|
||||
"content_html": "<p>Happy birthday! (translated)</p>",
|
||||
"url": "https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash",
|
||||
"title": "Happy 1st Birthday Slash! (translated)",
|
||||
"summary": "Happy birthday! (translated)",
|
||||
"date_modified": "2018-12-14T00:00:00.000Z",
|
||||
"author": {
|
||||
"name": "Yangshun Tay (translated)"
|
||||
},
|
||||
"tags": [
|
||||
"inlineTag",
|
||||
"Global Tag label (en)"
|
||||
]
|
||||
}
|
||||
]
|
||||
}",
|
||||
|
@ -698,126 +708,6 @@ exports[`rss filters to the first two entries using limit 1`] = `
|
|||
]
|
||||
`;
|
||||
|
||||
exports[`rss has feed item for each post 1`] = `
|
||||
[
|
||||
"<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Hello Blog</title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog</link>
|
||||
<description>Hello Blog</description>
|
||||
<lastBuildDate>Sun, 23 Jul 2023 00:00:00 GMT</lastBuildDate>
|
||||
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
|
||||
<generator>https://github.com/jpmonette/feed</generator>
|
||||
<language>en</language>
|
||||
<copyright>Copyright</copyright>
|
||||
<item>
|
||||
<title><![CDATA[test links]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/blog-with-links</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/blog-with-links</guid>
|
||||
<pubDate>Sun, 23 Jul 2023 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[absolute full url]]></description>
|
||||
<content:encoded><![CDATA[<p><a href="https://github.com/facebook/docusaurus" target="_blank" rel="noopener noreferrer">absolute full url</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">absolute pathname</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">relative pathname</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">md link</a></p>
|
||||
<p><a href="https://docusaurus.io/myBaseUrl/blog/blog-with-links#title">anchor</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title#title">relative pathname + anchor</a></p>
|
||||
<p><img loading="lazy" src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png" width="760" height="160" class="img_yGFe"></p>
|
||||
<p><img loading="lazy" src="https://docusaurus.io/assets/images/slash-introducing-411a16dd05086935b8e9ddae38ae9b45.svg" alt="" class="img_yGFe"></p>
|
||||
<img srcset="https://docusaurus.io/img/test-image.png 300w, https://docusaurus.io/img/docusaurus-social-card.png 500w">
|
||||
<img src="https://docusaurus.io/img/test-image.png">]]></content:encoded>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[MDX Blog Sample with require calls]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post</guid>
|
||||
<pubDate>Sat, 06 Mar 2021 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[Test MDX with require calls]]></description>
|
||||
<content:encoded><![CDATA[<p>Test MDX with require calls</p>
|
||||
<!-- -->
|
||||
<!-- -->
|
||||
<img src="https://docusaurus.io/img/test-image.png">
|
||||
<img src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png">
|
||||
<img src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png">]]></content:encoded>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[Full Blog Sample]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/mdx-blog-post</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/mdx-blog-post</guid>
|
||||
<pubDate>Fri, 05 Mar 2021 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[HTML Heading 1]]></description>
|
||||
<content:encoded><![CDATA[<h1>HTML Heading 1</h1>
|
||||
<h2>HTML Heading 2</h2>
|
||||
<p>HTML Paragraph</p>
|
||||
<!-- -->
|
||||
<!-- -->
|
||||
<p>Import DOM</p>
|
||||
<h1>Heading 1</h1>
|
||||
<h2 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-2">Heading 2<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-2" class="hash-link" aria-label="Direct link to Heading 2" title="Direct link to Heading 2"></a></h2>
|
||||
<h3 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-3">Heading 3<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-3" class="hash-link" aria-label="Direct link to Heading 3" title="Direct link to Heading 3"></a></h3>
|
||||
<h4 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-4">Heading 4<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-4" class="hash-link" aria-label="Direct link to Heading 4" title="Direct link to Heading 4"></a></h4>
|
||||
<h5 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-5">Heading 5<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-5" class="hash-link" aria-label="Direct link to Heading 5" title="Direct link to Heading 5"></a></h5>
|
||||
<ul>
|
||||
<li>list1</li>
|
||||
<li>list2</li>
|
||||
<li>list3</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>list1</li>
|
||||
<li>list2</li>
|
||||
<li>list3</li>
|
||||
</ul>
|
||||
<p>Normal Text <em>Italics Text</em> <strong>Bold Text</strong></p>
|
||||
<p><a href="https://v2.docusaurus.io/" target="_blank" rel="noopener noreferrer">link</a> <img loading="lazy" src="https://v2.docusaurus.io/" alt="image" class="img_yGFe"></p>]]></content:encoded>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[Complex Slug]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô</guid>
|
||||
<pubDate>Sun, 16 Aug 2020 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[complex url slug]]></description>
|
||||
<content:encoded><![CDATA[<p>complex url slug</p>]]></content:encoded>
|
||||
<category>date</category>
|
||||
<category>complex</category>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[Simple Slug]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/simple/slug</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/simple/slug</guid>
|
||||
<pubDate>Sat, 15 Aug 2020 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[simple url slug]]></description>
|
||||
<content:encoded><![CDATA[<p>simple url slug</p>]]></content:encoded>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[some heading]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/heading-as-title</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/heading-as-title</guid>
|
||||
<pubDate>Wed, 02 Jan 2019 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[date-matter]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/date-matter</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/date-matter</guid>
|
||||
<pubDate>Tue, 01 Jan 2019 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[date inside front matter]]></description>
|
||||
<content:encoded><![CDATA[<p>date inside front matter</p>]]></content:encoded>
|
||||
<category>date</category>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[Happy 1st Birthday Slash! (translated)]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash</guid>
|
||||
<pubDate>Fri, 14 Dec 2018 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[Happy birthday! (translated)]]></description>
|
||||
<content:encoded><![CDATA[<p>Happy birthday! (translated)</p>]]></content:encoded>
|
||||
<author>lorber.sebastien@gmail.com (Sébastien Lorber (translated))</author>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>",
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`rss has feed item for each post - with trailing slash 1`] = `
|
||||
[
|
||||
"<?xml version="1.0" encoding="utf-8"?>
|
||||
|
@ -932,6 +822,130 @@ exports[`rss has feed item for each post - with trailing slash 1`] = `
|
|||
<description><![CDATA[Happy birthday! (translated)]]></description>
|
||||
<content:encoded><![CDATA[<p>Happy birthday! (translated)</p>]]></content:encoded>
|
||||
<author>lorber.sebastien@gmail.com (Sébastien Lorber (translated))</author>
|
||||
<category>inlineTag</category>
|
||||
<category>Global Tag label (en)</category>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>",
|
||||
]
|
||||
`;
|
||||
|
||||
exports[`rss has feed item for each post 1`] = `
|
||||
[
|
||||
"<?xml version="1.0" encoding="utf-8"?>
|
||||
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
|
||||
<channel>
|
||||
<title>Hello Blog</title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog</link>
|
||||
<description>Hello Blog</description>
|
||||
<lastBuildDate>Sun, 23 Jul 2023 00:00:00 GMT</lastBuildDate>
|
||||
<docs>https://validator.w3.org/feed/docs/rss2.html</docs>
|
||||
<generator>https://github.com/jpmonette/feed</generator>
|
||||
<language>en</language>
|
||||
<copyright>Copyright</copyright>
|
||||
<item>
|
||||
<title><![CDATA[test links]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/blog-with-links</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/blog-with-links</guid>
|
||||
<pubDate>Sun, 23 Jul 2023 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[absolute full url]]></description>
|
||||
<content:encoded><![CDATA[<p><a href="https://github.com/facebook/docusaurus" target="_blank" rel="noopener noreferrer">absolute full url</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">absolute pathname</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">relative pathname</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title">md link</a></p>
|
||||
<p><a href="https://docusaurus.io/myBaseUrl/blog/blog-with-links#title">anchor</a></p>
|
||||
<p><a href="https://docusaurus.io/blog/heading-as-title#title">relative pathname + anchor</a></p>
|
||||
<p><img loading="lazy" src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png" width="760" height="160" class="img_yGFe"></p>
|
||||
<p><img loading="lazy" src="https://docusaurus.io/assets/images/slash-introducing-411a16dd05086935b8e9ddae38ae9b45.svg" alt="" class="img_yGFe"></p>
|
||||
<img srcset="https://docusaurus.io/img/test-image.png 300w, https://docusaurus.io/img/docusaurus-social-card.png 500w">
|
||||
<img src="https://docusaurus.io/img/test-image.png">]]></content:encoded>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[MDX Blog Sample with require calls]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/mdx-require-blog-post</guid>
|
||||
<pubDate>Sat, 06 Mar 2021 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[Test MDX with require calls]]></description>
|
||||
<content:encoded><![CDATA[<p>Test MDX with require calls</p>
|
||||
<!-- -->
|
||||
<!-- -->
|
||||
<img src="https://docusaurus.io/img/test-image.png">
|
||||
<img src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png">
|
||||
<img src="https://docusaurus.io/assets/images/test-image-742d39e51f41482e8132e79c09ad4eea.png">]]></content:encoded>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[Full Blog Sample]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/mdx-blog-post</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/mdx-blog-post</guid>
|
||||
<pubDate>Fri, 05 Mar 2021 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[HTML Heading 1]]></description>
|
||||
<content:encoded><![CDATA[<h1>HTML Heading 1</h1>
|
||||
<h2>HTML Heading 2</h2>
|
||||
<p>HTML Paragraph</p>
|
||||
<!-- -->
|
||||
<!-- -->
|
||||
<p>Import DOM</p>
|
||||
<h1>Heading 1</h1>
|
||||
<h2 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-2">Heading 2<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-2" class="hash-link" aria-label="Direct link to Heading 2" title="Direct link to Heading 2"></a></h2>
|
||||
<h3 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-3">Heading 3<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-3" class="hash-link" aria-label="Direct link to Heading 3" title="Direct link to Heading 3"></a></h3>
|
||||
<h4 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-4">Heading 4<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-4" class="hash-link" aria-label="Direct link to Heading 4" title="Direct link to Heading 4"></a></h4>
|
||||
<h5 class="anchor anchorWithHideOnScrollNavbar_G5V2" id="heading-5">Heading 5<a href="https://docusaurus.io/myBaseUrl/blog/mdx-blog-post#heading-5" class="hash-link" aria-label="Direct link to Heading 5" title="Direct link to Heading 5"></a></h5>
|
||||
<ul>
|
||||
<li>list1</li>
|
||||
<li>list2</li>
|
||||
<li>list3</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>list1</li>
|
||||
<li>list2</li>
|
||||
<li>list3</li>
|
||||
</ul>
|
||||
<p>Normal Text <em>Italics Text</em> <strong>Bold Text</strong></p>
|
||||
<p><a href="https://v2.docusaurus.io/" target="_blank" rel="noopener noreferrer">link</a> <img loading="lazy" src="https://v2.docusaurus.io/" alt="image" class="img_yGFe"></p>]]></content:encoded>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[Complex Slug]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/hey/my super path/héllô</guid>
|
||||
<pubDate>Sun, 16 Aug 2020 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[complex url slug]]></description>
|
||||
<content:encoded><![CDATA[<p>complex url slug</p>]]></content:encoded>
|
||||
<category>date</category>
|
||||
<category>complex</category>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[Simple Slug]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/simple/slug</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/simple/slug</guid>
|
||||
<pubDate>Sat, 15 Aug 2020 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[simple url slug]]></description>
|
||||
<content:encoded><![CDATA[<p>simple url slug</p>]]></content:encoded>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[some heading]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/heading-as-title</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/heading-as-title</guid>
|
||||
<pubDate>Wed, 02 Jan 2019 00:00:00 GMT</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[date-matter]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/date-matter</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/date-matter</guid>
|
||||
<pubDate>Tue, 01 Jan 2019 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[date inside front matter]]></description>
|
||||
<content:encoded><![CDATA[<p>date inside front matter</p>]]></content:encoded>
|
||||
<category>date</category>
|
||||
</item>
|
||||
<item>
|
||||
<title><![CDATA[Happy 1st Birthday Slash! (translated)]]></title>
|
||||
<link>https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash</link>
|
||||
<guid>https://docusaurus.io/myBaseUrl/blog/2018/12/14/Happy-First-Birthday-Slash</guid>
|
||||
<pubDate>Fri, 14 Dec 2018 00:00:00 GMT</pubDate>
|
||||
<description><![CDATA[Happy birthday! (translated)]]></description>
|
||||
<content:encoded><![CDATA[<p>Happy birthday! (translated)</p>]]></content:encoded>
|
||||
<author>lorber.sebastien@gmail.com (Sébastien Lorber (translated))</author>
|
||||
<category>inlineTag</category>
|
||||
<category>Global Tag label (en)</category>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>",
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
exports[`blog plugin process blog posts load content 1`] = `
|
||||
{
|
||||
"/blog/tags/tag-1": {
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"items": [
|
||||
"/simple/slug/another",
|
||||
"/another/tags",
|
||||
|
@ -63,6 +65,8 @@ exports[`blog plugin process blog posts load content 1`] = `
|
|||
"unlisted": false,
|
||||
},
|
||||
"/blog/tags/tag-2": {
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"items": [
|
||||
"/another/tags",
|
||||
"/another/tags2",
|
||||
|
@ -148,6 +152,8 @@ exports[`blog plugin process blog posts load content 2`] = `
|
|||
"source": "@site/blog/another-simple-slug-with-tags.md",
|
||||
"tags": [
|
||||
{
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"label": "tag1",
|
||||
"permalink": "/blog/tags/tag-1",
|
||||
},
|
||||
|
@ -189,10 +195,14 @@ exports[`blog plugin process blog posts load content 2`] = `
|
|||
"source": "@site/blog/another-with-tags.md",
|
||||
"tags": [
|
||||
{
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"label": "tag1",
|
||||
"permalink": "/blog/tags/tag-1",
|
||||
},
|
||||
{
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"label": "tag2",
|
||||
"permalink": "/blog/tags/tag-2",
|
||||
},
|
||||
|
@ -230,10 +240,14 @@ exports[`blog plugin process blog posts load content 2`] = `
|
|||
"source": "@site/blog/another-with-tags2.md",
|
||||
"tags": [
|
||||
{
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"label": "tag1",
|
||||
"permalink": "/blog/tags/tag-1",
|
||||
},
|
||||
{
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"label": "tag2",
|
||||
"permalink": "/blog/tags/tag-2",
|
||||
},
|
||||
|
@ -248,6 +262,8 @@ exports[`blog plugin process blog posts load content 2`] = `
|
|||
exports[`blog plugin works on blog tags without pagination 1`] = `
|
||||
{
|
||||
"/blog/tags/tag-1": {
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"items": [
|
||||
"/simple/slug/another",
|
||||
"/another/tags",
|
||||
|
@ -278,6 +294,8 @@ exports[`blog plugin works on blog tags without pagination 1`] = `
|
|||
"unlisted": false,
|
||||
},
|
||||
"/blog/tags/tag-2": {
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"items": [
|
||||
"/another/tags",
|
||||
"/another/tags2",
|
||||
|
@ -306,6 +324,8 @@ exports[`blog plugin works on blog tags without pagination 1`] = `
|
|||
"unlisted": false,
|
||||
},
|
||||
"/blog/tags/unlisted": {
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"items": [
|
||||
"/another/blog-with-tags-unlisted",
|
||||
],
|
||||
|
@ -337,6 +357,8 @@ exports[`blog plugin works on blog tags without pagination 1`] = `
|
|||
exports[`blog plugin works with blog tags 1`] = `
|
||||
{
|
||||
"/blog/tags/tag-1": {
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"items": [
|
||||
"/simple/slug/another",
|
||||
"/another/tags",
|
||||
|
@ -382,6 +404,8 @@ exports[`blog plugin works with blog tags 1`] = `
|
|||
"unlisted": false,
|
||||
},
|
||||
"/blog/tags/tag-2": {
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"items": [
|
||||
"/another/tags",
|
||||
"/another/tags2",
|
||||
|
@ -410,6 +434,8 @@ exports[`blog plugin works with blog tags 1`] = `
|
|||
"unlisted": false,
|
||||
},
|
||||
"/blog/tags/unlisted": {
|
||||
"description": undefined,
|
||||
"inline": true,
|
||||
"items": [
|
||||
"/another/blog-with-tags-unlisted",
|
||||
],
|
||||
|
|
|
@ -100,6 +100,7 @@ describe.each(['atom', 'rss', 'json'])('%s', (feedType) => {
|
|||
readingTime: ({content, defaultReadingTime}) =>
|
||||
defaultReadingTime({content}),
|
||||
truncateMarker: /<!--\s*truncate\s*-->/,
|
||||
onInlineTags: 'ignore',
|
||||
} as PluginOptions,
|
||||
);
|
||||
|
||||
|
@ -141,6 +142,7 @@ describe.each(['atom', 'rss', 'json'])('%s', (feedType) => {
|
|||
readingTime: ({content, defaultReadingTime}) =>
|
||||
defaultReadingTime({content}),
|
||||
truncateMarker: /<!--\s*truncate\s*-->/,
|
||||
onInlineTags: 'ignore',
|
||||
} as PluginOptions,
|
||||
);
|
||||
|
||||
|
@ -194,6 +196,7 @@ describe.each(['atom', 'rss', 'json'])('%s', (feedType) => {
|
|||
readingTime: ({content, defaultReadingTime}) =>
|
||||
defaultReadingTime({content}),
|
||||
truncateMarker: /<!--\s*truncate\s*-->/,
|
||||
onInlineTags: 'ignore',
|
||||
} as PluginOptions,
|
||||
);
|
||||
|
||||
|
@ -238,6 +241,7 @@ describe.each(['atom', 'rss', 'json'])('%s', (feedType) => {
|
|||
readingTime: ({content, defaultReadingTime}) =>
|
||||
defaultReadingTime({content}),
|
||||
truncateMarker: /<!--\s*truncate\s*-->/,
|
||||
onInlineTags: 'ignore',
|
||||
} as PluginOptions,
|
||||
);
|
||||
|
||||
|
@ -282,6 +286,7 @@ describe.each(['atom', 'rss', 'json'])('%s', (feedType) => {
|
|||
readingTime: ({content, defaultReadingTime}) =>
|
||||
defaultReadingTime({content}),
|
||||
truncateMarker: /<!--\s*truncate\s*-->/,
|
||||
onInlineTags: 'ignore',
|
||||
} as PluginOptions,
|
||||
);
|
||||
|
||||
|
|
|
@ -160,6 +160,8 @@ describe('blog plugin', () => {
|
|||
);
|
||||
expect(relativePathsToWatch).toEqual([
|
||||
'i18n/en/docusaurus-plugin-content-blog/authors.yml',
|
||||
'i18n/en/docusaurus-plugin-content-blog/tags.yml',
|
||||
'blog/tags.yml',
|
||||
'i18n/en/docusaurus-plugin-content-blog/**/*.{md,mdx}',
|
||||
'blog/**/*.{md,mdx}',
|
||||
]);
|
||||
|
@ -188,6 +190,8 @@ describe('blog plugin', () => {
|
|||
prevItem: undefined,
|
||||
tags: [
|
||||
{
|
||||
description: undefined,
|
||||
inline: true,
|
||||
label: 'date',
|
||||
permalink: '/blog/tags/date',
|
||||
},
|
||||
|
@ -232,9 +236,23 @@ describe('blog plugin', () => {
|
|||
},
|
||||
'slorber',
|
||||
],
|
||||
tags: ['inlineTag', 'globalTag'],
|
||||
title: 'Happy 1st Birthday Slash! (translated)',
|
||||
},
|
||||
tags: [],
|
||||
tags: [
|
||||
{
|
||||
description: undefined,
|
||||
inline: true,
|
||||
label: 'inlineTag',
|
||||
permalink: '/blog/tags/inline-tag',
|
||||
},
|
||||
{
|
||||
description: 'Global Tag description (en)',
|
||||
inline: false,
|
||||
label: 'Global Tag label (en)',
|
||||
permalink: '/blog/tags/global-tag-permalink (en)',
|
||||
},
|
||||
],
|
||||
prevItem: {
|
||||
permalink: '/blog/date-matter',
|
||||
title: 'date-matter',
|
||||
|
@ -269,10 +287,14 @@ describe('blog plugin', () => {
|
|||
},
|
||||
tags: [
|
||||
{
|
||||
description: undefined,
|
||||
inline: true,
|
||||
label: 'date',
|
||||
permalink: '/blog/tags/date',
|
||||
},
|
||||
{
|
||||
description: undefined,
|
||||
inline: true,
|
||||
label: 'complex',
|
||||
permalink: '/blog/tags/complex',
|
||||
},
|
||||
|
@ -516,6 +538,8 @@ describe('blog plugin', () => {
|
|||
postsPerPage: 1,
|
||||
processBlogPosts: async ({blogPosts}) =>
|
||||
blogPosts.filter((blog) => blog.metadata.tags[0]?.label === 'tag1'),
|
||||
onInlineTags: 'ignore',
|
||||
tags: false,
|
||||
},
|
||||
DefaultI18N,
|
||||
);
|
||||
|
|
|
@ -36,13 +36,15 @@ describe('validateOptions', () => {
|
|||
});
|
||||
|
||||
it('accepts correctly defined user options', () => {
|
||||
const userOptions = {
|
||||
const userOptions: Options = {
|
||||
...defaultOptions,
|
||||
feedOptions: {type: 'rss' as const, title: 'myTitle'},
|
||||
path: 'not_blog',
|
||||
routeBasePath: '/myBlog',
|
||||
postsPerPage: 5,
|
||||
include: ['api/*', 'docs/*'],
|
||||
tags: 'customTags.yml',
|
||||
onInlineTags: 'warn',
|
||||
};
|
||||
expect(testValidate(userOptions)).toEqual({
|
||||
...userOptions,
|
||||
|
@ -172,4 +174,68 @@ describe('validateOptions', () => {
|
|||
`""blogSidebarTitle" must be a string"`,
|
||||
);
|
||||
});
|
||||
|
||||
describe('tags', () => {
|
||||
it('accepts tags - undefined', () => {
|
||||
expect(testValidate({tags: undefined}).tags).toBeUndefined();
|
||||
});
|
||||
|
||||
it('accepts tags - null', () => {
|
||||
expect(testValidate({tags: null}).tags).toBeNull();
|
||||
});
|
||||
|
||||
it('accepts tags - false', () => {
|
||||
expect(testValidate({tags: false}).tags).toBeFalsy();
|
||||
});
|
||||
|
||||
it('accepts tags - customTags.yml', () => {
|
||||
expect(testValidate({tags: 'customTags.yml'}).tags).toBe(
|
||||
'customTags.yml',
|
||||
);
|
||||
});
|
||||
|
||||
it('rejects tags - 42', () => {
|
||||
// @ts-expect-error: test
|
||||
expect(() => testValidate({tags: 42})).toThrowErrorMatchingInlineSnapshot(
|
||||
`""tags" must be a string"`,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('onInlineTags', () => {
|
||||
it('accepts onInlineTags - undefined', () => {
|
||||
expect(testValidate({onInlineTags: undefined}).onInlineTags).toBe('warn');
|
||||
});
|
||||
|
||||
it('accepts onInlineTags - "throw"', () => {
|
||||
expect(testValidate({onInlineTags: 'throw'}).onInlineTags).toBe('throw');
|
||||
});
|
||||
|
||||
it('rejects onInlineTags - "trace"', () => {
|
||||
expect(() =>
|
||||
// @ts-expect-error: test
|
||||
testValidate({onInlineTags: 'trace'}),
|
||||
).toThrowErrorMatchingInlineSnapshot(
|
||||
`""onInlineTags" must be one of [ignore, log, warn, throw]"`,
|
||||
);
|
||||
});
|
||||
|
||||
it('rejects onInlineTags - null', () => {
|
||||
expect(() =>
|
||||
// @ts-expect-error: test
|
||||
testValidate({onInlineTags: 42}),
|
||||
).toThrowErrorMatchingInlineSnapshot(
|
||||
`""onInlineTags" must be one of [ignore, log, warn, throw]"`,
|
||||
);
|
||||
});
|
||||
|
||||
it('rejects onInlineTags - 42', () => {
|
||||
expect(() =>
|
||||
// @ts-expect-error: test
|
||||
testValidate({onInlineTags: 42}),
|
||||
).toThrowErrorMatchingInlineSnapshot(
|
||||
`""onInlineTags" must be one of [ignore, log, warn, throw]"`,
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
@ -18,7 +18,6 @@ import {
|
|||
getFolderContainingFile,
|
||||
posixPath,
|
||||
Globby,
|
||||
normalizeFrontMatterTags,
|
||||
groupTaggedItems,
|
||||
getTagVisibility,
|
||||
getFileCommitDate,
|
||||
|
@ -26,9 +25,12 @@ import {
|
|||
isUnlisted,
|
||||
isDraft,
|
||||
readLastUpdateData,
|
||||
normalizeTags,
|
||||
} from '@docusaurus/utils';
|
||||
import {getTagsFile} from '@docusaurus/utils-validation';
|
||||
import {validateBlogPostFrontMatter} from './frontMatter';
|
||||
import {type AuthorsMap, getAuthorsMap, getBlogPostAuthors} from './authors';
|
||||
import type {TagsFile} from '@docusaurus/utils';
|
||||
import type {LoadContext, ParseFrontMatter} from '@docusaurus/types';
|
||||
import type {
|
||||
PluginOptions,
|
||||
|
@ -125,9 +127,11 @@ export function getBlogTags({
|
|||
isUnlisted: (item) => item.metadata.unlisted,
|
||||
});
|
||||
return {
|
||||
inline: tag.inline,
|
||||
label: tag.label,
|
||||
items: tagVisibility.listedItems.map((item) => item.id),
|
||||
permalink: tag.permalink,
|
||||
description: tag.description,
|
||||
items: tagVisibility.listedItems.map((item) => item.id),
|
||||
pages: paginateBlogPosts({
|
||||
blogPosts: tagVisibility.listedItems,
|
||||
basePageUrl: tag.permalink,
|
||||
|
@ -197,6 +201,7 @@ async function processBlogSourceFile(
|
|||
contentPaths: BlogContentPaths,
|
||||
context: LoadContext,
|
||||
options: PluginOptions,
|
||||
tagsFile: TagsFile | null,
|
||||
authorsMap?: AuthorsMap,
|
||||
): Promise<BlogPost | undefined> {
|
||||
const {
|
||||
|
@ -315,13 +320,21 @@ async function processBlogSourceFile(
|
|||
return undefined;
|
||||
}
|
||||
|
||||
const tagsBasePath = normalizeUrl([
|
||||
const tagsBaseRoutePath = normalizeUrl([
|
||||
baseUrl,
|
||||
routeBasePath,
|
||||
tagsRouteBasePath,
|
||||
]);
|
||||
const authors = getBlogPostAuthors({authorsMap, frontMatter, baseUrl});
|
||||
|
||||
const tags = normalizeTags({
|
||||
options,
|
||||
source: blogSourceRelative,
|
||||
frontMatterTags: frontMatter.tags,
|
||||
tagsBaseRoutePath,
|
||||
tagsFile,
|
||||
});
|
||||
|
||||
return {
|
||||
id: slug,
|
||||
metadata: {
|
||||
|
@ -331,7 +344,7 @@ async function processBlogSourceFile(
|
|||
title,
|
||||
description,
|
||||
date,
|
||||
tags: normalizeFrontMatterTags(tagsBasePath, frontMatter.tags),
|
||||
tags,
|
||||
readingTime: showReadingTime
|
||||
? options.readingTime({
|
||||
content,
|
||||
|
@ -371,6 +384,8 @@ export async function generateBlogPosts(
|
|||
authorsMapPath: options.authorsMapPath,
|
||||
});
|
||||
|
||||
const tagsFile = await getTagsFile({contentPaths, tags: options.tags});
|
||||
|
||||
async function doProcessBlogSourceFile(blogSourceFile: string) {
|
||||
try {
|
||||
return await processBlogSourceFile(
|
||||
|
@ -378,6 +393,7 @@ export async function generateBlogPosts(
|
|||
contentPaths,
|
||||
context,
|
||||
options,
|
||||
tagsFile,
|
||||
authorsMap,
|
||||
);
|
||||
} catch (err) {
|
||||
|
|
|
@ -20,6 +20,7 @@ import {
|
|||
DEFAULT_PLUGIN_ID,
|
||||
resolveMarkdownLinkPathname,
|
||||
} from '@docusaurus/utils';
|
||||
import {getTagsFilePathsToWatch} from '@docusaurus/utils-validation';
|
||||
import {
|
||||
getSourceToPermalink,
|
||||
getBlogTags,
|
||||
|
@ -104,9 +105,16 @@ export default async function pluginContentBlog(
|
|||
(contentPath) => include.map((pattern) => `${contentPath}/${pattern}`),
|
||||
);
|
||||
|
||||
return [authorsMapFilePath, ...contentMarkdownGlobs].filter(
|
||||
Boolean,
|
||||
) as string[];
|
||||
const tagsFilePaths = getTagsFilePathsToWatch({
|
||||
contentPaths,
|
||||
tags: options.tags,
|
||||
});
|
||||
|
||||
return [
|
||||
authorsMapFilePath,
|
||||
...tagsFilePaths,
|
||||
...contentMarkdownGlobs,
|
||||
].filter(Boolean) as string[];
|
||||
},
|
||||
|
||||
getTranslationFiles() {
|
||||
|
|
|
@ -54,6 +54,8 @@ export const DEFAULT_OPTIONS: PluginOptions = {
|
|||
showLastUpdateTime: false,
|
||||
showLastUpdateAuthor: false,
|
||||
processBlogPosts: async () => undefined,
|
||||
onInlineTags: 'warn',
|
||||
tags: undefined,
|
||||
};
|
||||
|
||||
const PluginOptionSchema = Joi.object<PluginOptions>({
|
||||
|
@ -144,6 +146,13 @@ const PluginOptionSchema = Joi.object<PluginOptions>({
|
|||
processBlogPosts: Joi.function()
|
||||
.optional()
|
||||
.default(() => DEFAULT_OPTIONS.processBlogPosts),
|
||||
onInlineTags: Joi.string()
|
||||
.equal('ignore', 'log', 'warn', 'throw')
|
||||
.default(DEFAULT_OPTIONS.onInlineTags),
|
||||
tags: Joi.string()
|
||||
.disallow('')
|
||||
.allow(null, false)
|
||||
.default(() => DEFAULT_OPTIONS.tags),
|
||||
}).default(DEFAULT_OPTIONS);
|
||||
|
||||
export function validateOptions({
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/// <reference types="@docusaurus/module-type-aliases" />
|
||||
|
||||
declare module '@docusaurus/plugin-content-blog' {
|
||||
|
@ -12,9 +11,10 @@ declare module '@docusaurus/plugin-content-blog' {
|
|||
import type {MDXOptions} from '@docusaurus/mdx-loader';
|
||||
import type {
|
||||
FrontMatterTag,
|
||||
Tag,
|
||||
TagMetadata,
|
||||
LastUpdateData,
|
||||
FrontMatterLastUpdate,
|
||||
TagsPluginOptions,
|
||||
} from '@docusaurus/utils';
|
||||
import type {DocusaurusConfig, Plugin, LoadContext} from '@docusaurus/types';
|
||||
import type {Item as FeedItem} from 'feed';
|
||||
|
@ -236,7 +236,7 @@ yarn workspace v1.22.19image` is a collocated image path, this entry will be the
|
|||
/** Front matter, as-is. */
|
||||
readonly frontMatter: BlogPostFrontMatter & {[key: string]: unknown};
|
||||
/** Tags, normalized. */
|
||||
readonly tags: Tag[];
|
||||
readonly tags: TagMetadata[];
|
||||
/**
|
||||
* Marks the post as unlisted and visibly hides it unless directly accessed.
|
||||
*/
|
||||
|
@ -345,103 +345,104 @@ yarn workspace v1.22.19image` is a collocated image path, this entry will be the
|
|||
/**
|
||||
* Plugin options after normalization.
|
||||
*/
|
||||
export type PluginOptions = MDXOptions & {
|
||||
/** Plugin ID. */
|
||||
id?: string;
|
||||
/**
|
||||
* Path to the blog content directory on the file system, relative to site
|
||||
* directory.
|
||||
*/
|
||||
path: string;
|
||||
/**
|
||||
* URL route for the blog section of your site. **DO NOT** include a
|
||||
* trailing slash. Use `/` to put the blog at root path.
|
||||
*/
|
||||
routeBasePath: string;
|
||||
/**
|
||||
* URL route for the tags section of your blog. Will be appended to
|
||||
* `routeBasePath`.
|
||||
*/
|
||||
tagsBasePath: string;
|
||||
/**
|
||||
* URL route for the pages section of your blog. Will be appended to
|
||||
* `routeBasePath`.
|
||||
*/
|
||||
pageBasePath: string;
|
||||
/**
|
||||
* URL route for the archive section of your blog. Will be appended to
|
||||
* `routeBasePath`. **DO NOT** include a trailing slash. Use `null` to
|
||||
* disable generation of archive.
|
||||
*/
|
||||
archiveBasePath: string | null;
|
||||
/**
|
||||
* Array of glob patterns matching Markdown files to be built, relative to
|
||||
* the content path.
|
||||
*/
|
||||
include: string[];
|
||||
/**
|
||||
* Array of glob patterns matching Markdown files to be excluded. Serves as
|
||||
* refinement based on the `include` option.
|
||||
*/
|
||||
exclude: string[];
|
||||
/**
|
||||
* Number of posts to show per page in the listing page. Use `'ALL'` to
|
||||
* display all posts on one listing page.
|
||||
*/
|
||||
postsPerPage: number | 'ALL';
|
||||
/** Root component of the blog listing page. */
|
||||
blogListComponent: string;
|
||||
/** Root component of each blog post page. */
|
||||
blogPostComponent: string;
|
||||
/** Root component of the tags list page. */
|
||||
blogTagsListComponent: string;
|
||||
/** Root component of the "posts containing tag" page. */
|
||||
blogTagsPostsComponent: string;
|
||||
/** Root component of the blog archive page. */
|
||||
blogArchiveComponent: string;
|
||||
/** Blog page title for better SEO. */
|
||||
blogTitle: string;
|
||||
/** Blog page meta description for better SEO. */
|
||||
blogDescription: string;
|
||||
/**
|
||||
* Number of blog post elements to show in the blog sidebar. `'ALL'` to show
|
||||
* all blog posts; `0` to disable.
|
||||
*/
|
||||
blogSidebarCount: number | 'ALL';
|
||||
/** Title of the blog sidebar. */
|
||||
blogSidebarTitle: string;
|
||||
/** Truncate marker marking where the summary ends. */
|
||||
truncateMarker: RegExp;
|
||||
/** Show estimated reading time for the blog post. */
|
||||
showReadingTime: boolean;
|
||||
/** Blog feed. */
|
||||
feedOptions: FeedOptions;
|
||||
/**
|
||||
* Base URL to edit your site. The final URL is computed by `editUrl +
|
||||
* relativePostPath`. Using a function allows more nuanced control for each
|
||||
* file. Omitting this variable entirely will disable edit links.
|
||||
*/
|
||||
editUrl?: string | EditUrlFunction;
|
||||
/**
|
||||
* The edit URL will target the localized file, instead of the original
|
||||
* unlocalized file. Ignored when `editUrl` is a function.
|
||||
*/
|
||||
editLocalizedFiles?: boolean;
|
||||
/** Path to the authors map file, relative to the blog content directory. */
|
||||
authorsMapPath: string;
|
||||
/** A callback to customize the reading time number displayed. */
|
||||
readingTime: ReadingTimeFunctionOption;
|
||||
/** Governs the direction of blog post sorting. */
|
||||
sortPosts: 'ascending' | 'descending';
|
||||
/** Whether to display the last date the doc was updated. */
|
||||
showLastUpdateTime: boolean;
|
||||
/** Whether to display the author who last updated the doc. */
|
||||
showLastUpdateAuthor: boolean;
|
||||
/** An optional function which can be used to transform blog posts
|
||||
* (filter, modify, delete, etc...).
|
||||
*/
|
||||
processBlogPosts: ProcessBlogPostsFn;
|
||||
};
|
||||
export type PluginOptions = MDXOptions &
|
||||
TagsPluginOptions & {
|
||||
/** Plugin ID. */
|
||||
id?: string;
|
||||
/**
|
||||
* Path to the blog content directory on the file system, relative to site
|
||||
* directory.
|
||||
*/
|
||||
path: string;
|
||||
/**
|
||||
* URL route for the blog section of your site. **DO NOT** include a
|
||||
* trailing slash. Use `/` to put the blog at root path.
|
||||
*/
|
||||
routeBasePath: string;
|
||||
/**
|
||||
* URL route for the tags section of your blog. Will be appended to
|
||||
* `routeBasePath`.
|
||||
*/
|
||||
tagsBasePath: string;
|
||||
/**
|
||||
* URL route for the pages section of your blog. Will be appended to
|
||||
* `routeBasePath`.
|
||||
*/
|
||||
pageBasePath: string;
|
||||
/**
|
||||
* URL route for the archive section of your blog. Will be appended to
|
||||
* `routeBasePath`. **DO NOT** include a trailing slash. Use `null` to
|
||||
* disable generation of archive.
|
||||
*/
|
||||
archiveBasePath: string | null;
|
||||
/**
|
||||
* Array of glob patterns matching Markdown files to be built, relative to
|
||||
* the content path.
|
||||
*/
|
||||
include: string[];
|
||||
/**
|
||||
* Array of glob patterns matching Markdown files to be excluded. Serves as
|
||||
* refinement based on the `include` option.
|
||||
*/
|
||||
exclude: string[];
|
||||
/**
|
||||
* Number of posts to show per page in the listing page. Use `'ALL'` to
|
||||
* display all posts on one listing page.
|
||||
*/
|
||||
postsPerPage: number | 'ALL';
|
||||
/** Root component of the blog listing page. */
|
||||
blogListComponent: string;
|
||||
/** Root component of each blog post page. */
|
||||
blogPostComponent: string;
|
||||
/** Root component of the tags list page. */
|
||||
blogTagsListComponent: string;
|
||||
/** Root component of the "posts containing tag" page. */
|
||||
blogTagsPostsComponent: string;
|
||||
/** Root component of the blog archive page. */
|
||||
blogArchiveComponent: string;
|
||||
/** Blog page title for better SEO. */
|
||||
blogTitle: string;
|
||||
/** Blog page meta description for better SEO. */
|
||||
blogDescription: string;
|
||||
/**
|
||||
* Number of blog post elements to show in the blog sidebar. `'ALL'` to show
|
||||
* all blog posts; `0` to disable.
|
||||
*/
|
||||
blogSidebarCount: number | 'ALL';
|
||||
/** Title of the blog sidebar. */
|
||||
blogSidebarTitle: string;
|
||||
/** Truncate marker marking where the summary ends. */
|
||||
truncateMarker: RegExp;
|
||||
/** Show estimated reading time for the blog post. */
|
||||
showReadingTime: boolean;
|
||||
/** Blog feed. */
|
||||
feedOptions: FeedOptions;
|
||||
/**
|
||||
* Base URL to edit your site. The final URL is computed by `editUrl +
|
||||
* relativePostPath`. Using a function allows more nuanced control for each
|
||||
* file. Omitting this variable entirely will disable edit links.
|
||||
*/
|
||||
editUrl?: string | EditUrlFunction;
|
||||
/**
|
||||
* The edit URL will target the localized file, instead of the original
|
||||
* unlocalized file. Ignored when `editUrl` is a function.
|
||||
*/
|
||||
editLocalizedFiles?: boolean;
|
||||
/** Path to the authors map file, relative to the blog content directory. */
|
||||
authorsMapPath: string;
|
||||
/** A callback to customize the reading time number displayed. */
|
||||
readingTime: ReadingTimeFunctionOption;
|
||||
/** Governs the direction of blog post sorting. */
|
||||
sortPosts: 'ascending' | 'descending';
|
||||
/** Whether to display the last date the doc was updated. */
|
||||
showLastUpdateTime: boolean;
|
||||
/** Whether to display the author who last updated the doc. */
|
||||
showLastUpdateAuthor: boolean;
|
||||
/** An optional function which can be used to transform blog posts
|
||||
* (filter, modify, delete, etc...).
|
||||
*/
|
||||
processBlogPosts: ProcessBlogPostsFn;
|
||||
};
|
||||
|
||||
/**
|
||||
* Feed options, as provided by user config. `type` accepts `all` as shortcut
|
||||
|
@ -494,7 +495,7 @@ yarn workspace v1.22.19image` is a collocated image path, this entry will be the
|
|||
[permalink: string]: BlogTag;
|
||||
};
|
||||
|
||||
export type BlogTag = Tag & {
|
||||
export type BlogTag = TagMetadata & {
|
||||
/** Blog post permalinks. */
|
||||
items: string[];
|
||||
pages: BlogPaginated[];
|
||||
|
|
|
@ -13,6 +13,7 @@ export function toTagsProp({blogTags}: {blogTags: BlogTags}): TagsListItem[] {
|
|||
.map((tag) => ({
|
||||
label: tag.label,
|
||||
permalink: tag.permalink,
|
||||
description: tag.description,
|
||||
count: tag.items.length,
|
||||
}));
|
||||
}
|
||||
|
@ -27,6 +28,7 @@ export function toTagProp({
|
|||
return {
|
||||
label: tag.label,
|
||||
permalink: tag.permalink,
|
||||
description: tag.description,
|
||||
allTagsPath: blogTagsListPath,
|
||||
count: tag.items.length,
|
||||
unlisted: tag.unlisted,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue