Nuxt 3 및 Nuxt Content v2로 RSS 피드 만들기
설정
먼저 create a new Nuxt 3 project . 다음 단계로 애플리케이션에 add the Nuxt Content v2 module 해야 합니다.
마지막으로 RSS 피드에 포함될 일부 콘텐츠를 추가해 보겠습니다.
├── content
| └── blog
| └── blog
| | ├── article-1.md
| | ├── article-2.md
| | ├── article-3.md
| | ├── article-4.md
| | ├── article-5.md
각
.md
파일의 구조는 다음과 같습니다.---
title: 'Article 1'
description: 'Article 1 description'
date: '2022-01-01'
---
Article 5 Content
이 데모의 소스 코드는 GitHub 및 이 StackBlitz 플레이그라운드에서 사용할 수 있습니다.
서버 경로 추가
Nuxt에서 사용할 수 있는 server routes을 활용할 것이며 그렇게 하려면 앱 루트 내에 직접
server/
디렉토리를 만들어야 합니다.이 작업이 완료되면 이 안에
routes/
디렉토리를 만들고 rss.xml.ts
파일을 추가합니다. /rss.xml
로 번역됩니다.export default defineEventHandler(async (event) => {
const feedString = ''
event.res.setHeader('content-type', 'text/xml')
event.res.end(feedString)
})
다음 단계는 블로그 게시물을 쿼리하는 것입니다.
import { serverQueryContent } from '#content/server'
export default defineEventHandler(async (event) => {
const docs = await serverQueryContent(event).sort({ date: -1 }).where({ _partial: false }).find()
const blogPosts = docs.filter((doc) => doc?._path?.includes('/blog'))
const feedString = ''
event.res.setHeader('content-type', 'text/xml')
event.res.end(feedString)
})
이제 rss 라이브러리를 추가하여 콘텐츠를 기반으로 RSS XML 문자열을 생성해 보겠습니다.
import { serverQueryContent } from '#content/server'
import RSS from 'rss'
const feed = new RSS({
title: 'Michael Hoffmann',
site_url: 'https://mokkapps.de',
feed_url: `https://mokkapps.de/rss.xml`,
})
const docs = await serverQueryContent(event).sort({ date: -1 }).where({ _partial: false }).find()
const blogPosts = docs.filter((doc) => doc?._path?.includes('/blog'))
for (const doc of blogPosts) {
feed.item({
title: doc.title ?? '-',
url: `https://mokkapps.de${doc._path}`,
date: doc.date,
description: doc.description,
})
}
const feedString = feed.xml({ indent: true })
event.res.setHeader('content-type', 'text/xml')
event.res.end(feedString)
nuxt generate
를 사용하는 경우 서버 경로가 정적 호스팅에서 실행될 수 없으므로 피드를 사전 렌더링할 수 있습니다.nitro.prerender
에서 nuxt.config
옵션을 사용하여 이를 수행할 수 있습니다.import { defineNuxtConfig } from 'nuxt'
// https://v3.nuxtjs.org/api/configuration/nuxt.config
export default defineNuxtConfig({
modules: ['@nuxt/content'],
nitro: {
prerender: {
routes: ['/rss.xml'],
},
},
content: {
// https://content.nuxtjs.org/api/configuration
},
})
이제
/rss.xml
로 이동하면 생성된 RSS 피드를 얻습니다.<rss xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
<channel>
<title>
<![CDATA[ Michael Hoffmann ]]>
</title>
<description>
<![CDATA[ Michael Hoffmann ]]>
</description>
<link>https://mokkapps.de</link>
<generator>RSS for Node</generator>
<lastBuildDate>Sun, 14 Aug 2022 18:14:16 GMT</lastBuildDate>
<atom:link href="https://mokkapps.de/rss.xml" rel="self" type="application/rss+xml"/>
<item>
<title>
<![CDATA[ Article 5 ]]>
</title>
<description>
<![CDATA[ Article 5 description ]]>
</description>
<link>https://mokkapps.de/blog/article-5</link>
<guid isPermaLink="true">https://mokkapps.de/blog/article-5</guid>
<pubDate>Thu, 05 May 2022 00:00:00 GMT</pubDate>
</item>
<item>
<title>
<![CDATA[ Article 4 ]]>
</title>
<description>
<![CDATA[ Article 4 description ]]>
</description>
<link>https://mokkapps.de/blog/article-4</link>
<guid isPermaLink="true">https://mokkapps.de/blog/article-4</guid>
<pubDate>Mon, 04 Apr 2022 00:00:00 GMT</pubDate>
</item>
<item>
<title>
<![CDATA[ Article 3 ]]>
</title>
<description>
<![CDATA[ Article 3 description ]]>
</description>
<link>https://mokkapps.de/blog/article-3</link>
<guid isPermaLink="true">https://mokkapps.de/blog/article-3</guid>
<pubDate>Thu, 03 Mar 2022 00:00:00 GMT</pubDate>
</item>
<item>
<title>
<![CDATA[ Article 2 ]]>
</title>
<description>
<![CDATA[ Article 2 description ]]>
</description>
<link>https://mokkapps.de/blog/article-2</link>
<guid isPermaLink="true">https://mokkapps.de/blog/article-2</guid>
<pubDate>Wed, 02 Feb 2022 00:00:00 GMT</pubDate>
</item>
<item>
<title>
<![CDATA[ Article 1 ]]>
</title>
<description>
<![CDATA[ Article 1 description ]]>
</description>
<link>https://mokkapps.de/blog/article-1</link>
<guid isPermaLink="true">https://mokkapps.de/blog/article-1</guid>
<pubDate>Sat, 01 Jan 2022 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
이 기사가 마음에 드셨다면 저를 팔로우하여 새 블로그 게시물과 더 많은 콘텐츠에 대한 알림을 받으세요.
또는 (또는 추가로) subscribe to my newsletter .
Reference
이 문제에 관하여(Nuxt 3 및 Nuxt Content v2로 RSS 피드 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mokkapps/create-an-rss-feed-with-nuxt-3-and-nuxt-content-v2-i14텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)