Feedsmith
요약
Feedsmith는 RSS, Atom, RDF, JSON Feed 등 다양한 피드 형식을 위한 빠르고 올인원 JavaScript 파서 및 생성기입니다. 이 도구는 모든 주요 피드 형식과 네임스페이스를 지원하며, 레거시 요소를 현대적인 방식으로 정규화하여 오래된 피드도 안정적으로 처리할 수 있게 합니다.
핵심 포인트
- 다양한 피드 포맷(RSS, Atom 등)을 모두 지원하는 올인원 솔루션입니다.
- 레거시 요소와 비표준 네임스페이스를 자동으로 현대적/표준 방식으로 변환합니다.
- TypeScript 기반으로 구축되어 타입 안전성이 높고 성능이 우수합니다.
Feedsmith
RSS, Atom, RDF, JSON Feed를 위한 빠르고 올인원(all-in-one) JavaScript 피드 파서 및 생성기입니다. 인기 있는 네임스페이스와 OPML 파일도 지원합니다.
Feedsmith의 범용적이고 형식별 파서는 모든 피드를 원본 구조를 반영하는 객체로 변환하며, 레거시 요소(legacy elements)를 현대적인 등가물에 매핑하여 오래된 피드든 새로운 피드든 동일한 방식으로 읽을 수 있게 합니다.
[!IMPORTANT]
Feedsmith 3.0이 출시되었습니다! 🎉 다양한 개선 사항과 일부 변경되는 부분이 포함되어 있습니다. 무엇이 새롭고 2.x 버전에서 어떻게 업그레이드해야 하는지 확인하려면 마이그레이션 가이드를 확인하세요.
전체 문서 보기 ↗
·
빠른 시작
·
Feedsmith를 사용해야 하는 이유?
·
벤치마크 →
기능 (Features)
핵심 (Core)
- 포괄적인 지원: 모든 주요 피드 형식과 네임스페이스를 지원합니다.
- 구조 보존: 파싱된 피드 객체는 원본 피드 구조를 유지하여 데이터에 쉽게 접근할 수 있습니다.
- 스마트 네임스페이스 처리: 사용자 정의 네임스페이스 접두사(custom namespace prefixes)를 표준 접두사로 정규화합니다 (예:
<custom:creator>가dc.creator가 됨). - 파싱 및 생성: 피드 파싱과 생성을 모두 하나의 패키지로 사용할 수 있습니다.
관용성 (Leniency)
- 레거시 요소 정규화 (Normalizes legacy elements): 피드 요소를 최신 동등물로 업그레이드하여 오래된 형식의 피드를 읽는 것에 대해 걱정할 필요가 없습니다.
- 대소문자 무시 (CaSe INSENsiTive): 모든 경우(소문자, 대문자, 혼합)의 필드와 속성을 처리합니다.
- 네임스페이스 URI 허용 (Namespace URI tolerance): 비공식 네임스페이스 URI(HTTPS 변형, 대소문자 변화, 후행 슬래시, 공백)를 수락합니다.
- 관대함 (Forgiving): 잘못되거나 불완전한 피드를 우아하게 처리하고 유효한 데이터를 추출합니다. 이는 명세에 엄격하게 따르지 않을 수 있는 실제 피드 사용에 적합하게 만듭니다.
성능 (Performance)
- 초고속 파싱 (Ultrafast parsing): 가장 빠른 JavaScript 피드 파서 중 하나입니다 (벤치마크 보기).
- 타입 안전 API (Type-safe API): 처음부터 TypeScript로 구축되어 모든 피드 형식과 네임스페이스에 대한 완전한 타입 정의를 제공합니다.
- 트리 쉐이킹 가능 (Tree-shakable): 필요한 부분만 라이브러리를 포함하여 번들 크기를 줄입니다.
- 철저하게 테스트됨 (Well-tested): 4000개 이상의 테스트와 99%의 코드 커버리지를 가진 포괄적인 테스트 스위트를 갖추고 있습니다.
호환성 (Compatibility)
- Node.js 및 최신 브라우저에서 작동합니다.
- CommonJS와 ES 모듈을 모두 지원합니다.
- 순수 JavaScript로 작동하므로 TypeScript가 필요하지 않습니다.
지원 형식 (Supported Formats)
Feedsmith는 각 사양에 완벽하게 맞춰 모든 주요 피드 형식과 네임스페이스를 완전히 지원하는 것을 목표로 합니다.
✅ 사용 가능
·
⌛️ 작업 진행 중
·
📋 계획됨
피드 (Feeds)
| 형식 | 버전 | 파싱 | 생성 |
|---|---|---|---|
| RSS | 0.9x, 2.0 | ✅ | ✅ |
| ... |
기타 (Other)
| 형식 | 버전 | 파싱 | 생성 |
|---|---|---|---|
| OPML | 1.0, 2.0 | ✅ | ✅ |
피드 네임스페이스 (Feed Namespaces)
| 이름 | 접두사 | 지원 형식 | 파싱 | 생성 |
|---|---|---|---|---|
| Atom | <atom:*> | RSS, RDF | ✅ | ✅ |
| ... |
빠른 시작 (Quick Start)
이 가이드만 따르면 몇 분 만에 Feedsmith를 사용하실 수 있습니다.
모든 기능에 대한 전체 개요는 문서 웹사이트를 방문해 주세요.
설치 (Installation)
npm install feedsmith
v2.x에서 마이그레이션하나요? 마이그레이션 가이드를 확인해 보세요.
모든 피드 구문 분석 (Parse Any Feed)
모든 피드를 구문 분석하는 가장 간단한 방법은 범용 parseFeed 함수를 사용하는 것입니다:
import { parseFeed } from 'feedsmith'
// RSS, Atom, RDF, JSON Feed와 함께 작동합니다
...
특정 피드 형식 구문 분석 (Parse Specific Feed Formats)
형식을 미리 알고 있다면, 형식별 전용 파서를 사용할 수 있습니다:
import {
parseAtomFeed,
parseJsonFeed,
...
OPML 파일 구문 분석 (Parse OPML Files)
import { parseOpml } from 'feedsmith'
const opml = parseOpml('opml 내용')
...
피드 생성 (Generate a Feed)
import { generateRssFeed } from 'feedsmith'
const rss = generateRssFeed({
...
오류 처리 (Error Handling)
피드가 인식되지 않거나 유효하지 않은 경우, 설명 메시지와 함께 Error가 발생합니다.
import { parseFeed, parseJsonFeed } from 'feedsmith'
try {
...
TypeScript 타입 (TypeScript Types)
Feedsmith는 모든 피드 형식에 대한 포괄적인 TypeScript 타입을 제공합니다:
import type { AnyFeed, AtomFeed, JsonFeed, Opml, RssFeed } from 'feedsmith'
// 형식의 모든 타입에 접근합니다
...
Feedsmith를 사용해야 하는 이유 (Why Feedsmith?)
대안 라이브러리 대신 왜 이 라이브러리를 사용해야 할까요?
Feedsmith의 핵심 장점은 각 특정 피드 형식에 정의된 원래 피드 구조를 정확하게 보존한다는 것입니다.
많은 대안 패키지들은 다음을 통해 데이터를 정규화하려고 시도합니다:
author,dc:creator, 그리고creator와 같은 개별 필드를 단일 속성으로 병합하는 것.- 출처를 보존하지 않은 채
dc:date및pubDate와 같은 날짜 필드를 결합하는 것. - 여러 개의
<atom:link>요소를 일관성 없이 처리하여, 때로는 첫 번째 또는 마지막 요소만 유지하거나 다른rel속성을 무시하는 경우. - 일부 라이브러리는 다양한 피드 형식을 하나의 범용 구조로 통합하려고 시도합니다.
이러한 접근 방식은 피드 데이터를 빠르게 읽는 데 유용할 수 있지만, 특정 네임스페이스의 데이터를 읽는 것과 같이 중요한 애플리케이션에 필수적일 수 있는 정보 손실을 초래하는 경우가 많습니다.
감사의 글 (Acknowledgements)
- 이 라이브러리의 API는 FeedKit library for Swift에서 영감을 받았습니다.
- XML 파싱은 fast-xml-parser가 제공합니다.
- HTML 엔티티 디코딩은 entities에 의해 처리됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 개발 자료 GitHub · ec1fbd44의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기