docusaurus/lib/server/feed.js
Héctor Ramos c99cdefd3a Fix links in blog Atom feed (#421)
The root URL was missing the baseURL portion. This is fine when a site is hosted on a custom URL such as docusaurus.io, because the generated URL will be valid (docusaurus.io/blog), but it breaks when the site is hosted on GitHub Pages (the React Native feed was using facebook.github.io/blog as the rootURL).

* Fix link to header image
2018-01-31 20:04:35 -08:00

82 lines
2.1 KiB
JavaScript

/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const fs = require('fs-extra');
const path = require('path');
const os = require('os');
const Feed = require('feed');
const chalk = require('chalk');
const CWD = process.cwd();
const siteConfig = require(CWD + '/siteConfig.js');
const blogFolder = path.resolve('../blog/');
const blogRootURL = siteConfig.url + siteConfig.baseUrl + 'blog';
const siteImageURL =
siteConfig.url + siteConfig.baseUrl + siteConfig.headerIcon;
/****************************************************************************/
let readMetadata;
let Metadata;
readMetadata = require('./readMetadata.js');
readMetadata.generateMetadataDocs();
Metadata = require('../core/metadata.js');
/****************************************************************************/
module.exports = function(type) {
console.log('feed.js triggered...');
type = type || 'rss';
readMetadata.generateMetadataBlog();
const MetadataBlog = require('../core/MetadataBlog.js');
const feed = new Feed({
title: siteConfig.title + ' Blog',
description:
'The best place to stay up-to-date with the latest ' +
siteConfig.title +
' news and events.',
id: blogRootURL,
link: blogRootURL,
image: siteImageURL,
copyright: siteConfig.copyright,
updated: new Date(MetadataBlog[0].date),
});
MetadataBlog.forEach(post => {
const url = blogRootURL + '/' + post.path;
let content = '';
if (post.content.indexOf('<!--truncate-->') == -1) {
content = post.content.trim().substring(0, 250);
} else {
let contentArr = post.content.split('<!--truncate-->');
if (contentArr.length > 0) {
content = contentArr[0];
}
}
feed.addItem({
title: post.title,
link: url,
author: [
{
name: post.author,
link: post.authorURL,
},
],
date: new Date(post.date),
description: content,
});
});
return type === 'rss' ? feed.rss2() : feed.atom1();
};