UNPKG

generate-feed

Version:
180 lines (140 loc) 4.6 kB
# generate-feed [![stability][0]][1] [![npm version][2]][3] [![build status][4]][5] [![coverage][12]][13] [![downloads][8]][9] [![js-standard-style][10]][11] Generate rss/atom/json feeds from a simple, scalable and standard blog index format. ## Usage ```console $ tree log-folder/ log-folder/ ├── 2016.json ├── 2017.json ├── 2018.json └── config.json $ generate-feed log-folder --dest build-folder # generates a json and atom feed file from the $ tree build-folder/ build-folder/ ├── 2016.json ├── 2016.xml ├── 2017.json ├── 2017.xml ├── feed.json └── feed.xml ``` ## CLI ```console $ generate-feed --help Usage: generate-feed [source] [options] Example: generate-feed source/ -b build/ source path to source directory (default: log) --dest, -b path to build directory (default: "build") --version, -v show version information --help, -h show help ``` ## Config The log folder is required to have a `config.json` file. Required + recommended options: ```json { "title": "Feeds need a title!", "url": "https://thesiteurl.com", "description": "Explain what this feed is for", "author": "Your Name <your@email.com> (https://yourPersonalWebsite.com)" } ``` Additional configuration properties: ```json { "user_comment": "A comment viewers of the raw feed should see", "icon": "https://examaple.com/pic512x512.png", "favicon": "https://examaple.com/pic64x64.png", "expired": false } ``` ## Log types All log entries must have a type field, to specify how it is processed. Any fields missing a log field are processed as a `Log` entry. Log files should be alphanumerical so they sort from oldest to latest. ```console $ tree log-folder log-folder/ ├── 2016.json ├── 2017.json ├── 2018.json └── config.json ``` The log json should be a single array with typed objects ascending (oldest at the top, newest at the bottom). ```json [ { date: "2018-04-07T15:06:43-07:00" }, { date: "2018-04-08T15:06:43-07:00" }, { date: "2018-04-09T15:06:43-07:00" } ] ``` ### Log All fields are optional. These are recommended: ```json { "date": "2018-04-07T15:06:43-07:00", "content": "Plain text or HTML", "title": "Optional title", "url": "/some/url" } ``` Additional properties: ```json { "modified": "2018-04-07T13:48:02-07:00", "link": "https://example.com/some/external/link", "image": "/some/optional/image/url", "banner_image": "/some/optional/image/url", "author": "Some Author <email@gmail.com> (https://example.com/some/external/link)", "summary": "you can include a summary", "tags": [ "any", "tags" ], "attachments": [ { "url": "https://example.com", "mime_type": "audio/mpeg", "title": "foo a title", "size_in_bytes": 123, "duration_in_seconds": 123 } ] } ``` ### Markdown Example markdown log example ```json { "content": "Websockets", "type": "md", "date": "2019-10-29T18:50:05.140Z", "path": "../projects/websockets/README.md", "url": "https://bret.io/projects/websockets/" } ``` ## References - [jsonfeed.org](https://jsonfeed.org) - [validator.jsonfeed.org](https://validator.jsonfeed.org) - [twitter.com/jsonfeed](https://twitter.com/jsonfeed) - [http://atomenabled.org](https://web.archive.org/web/20160113103647/http://atomenabled.org/developers/syndication/ ) - [bcomnes/jsonfeed-to-atom](https://github.com/bcomnes/jsonfeed-to-atom) - [json-feed-viewer.herokuapp.com](https://json-feed-viewer.herokuapp.com/) ## License [MIT](https://tldrlegal.com/license/mit-license) [0]: https://img.shields.io/badge/stability-experimental-orange.svg?style=flat-square [1]: https://nodejs.org/api/documentation.html#documentation_stability_index [2]: https://img.shields.io/npm/v/generate-feed.svg?style=flat-square [3]: https://npmjs.org/package/generate-feed [4]: https://github.com/bcomnes/generate-feed/workflows/tests/badge.svg?style=flat-square [5]: https://github.com/bcomnes/generate-feed/actions [8]: http://img.shields.io/npm/dm/generate-feed.svg?style=flat-square [9]: https://npmjs.org/package/generate-feed [10]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square [11]: https://github.com/feross/standard [12]: https://img.shields.io/coveralls/bcomnes/generate-feed/master.svg?style=flat-square [13]: https://coveralls.io/github/bcomnes/generate-feed