docusaurus/lib/server/sitemap.js
Eric Nakagawa bcba05ae03 Adds sitemap.xml. Adds 'Help Translate' to translatable strings. Error messages and fn name cleanups. (#136)
* added a note about needing more than one language to be enabled to allow for a drop down

* Removing debug statements

* Add 'Help Translate' to translatable strings, improves error messages around missing translated strings, calls write-translations on some routes

* Adds sitemap.xml to live server and build. Versioning not supported. -- Also did some file name and module cache cleanups.
2017-10-18 12:55:58 -07:00

94 lines
2.3 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 glob = require("glob");
const CWD = process.cwd();
const sitemap = require("sitemap");
const siteConfig = require(CWD + "/siteConfig.js");
const blogFolder = path.resolve("../blog/");
const blogRootURL = siteConfig.url + "/blog";
const jestImage = siteConfig.url + siteConfig.headerIcon;
/****************************************************************************/
let readMetadata;
let Metadata;
let MetadataBlog;
readMetadata = require("./readMetadata.js");
readMetadata.generateMetadataDocs();
Metadata = require("../core/metadata.js");
readMetadata.generateMetadataBlog();
MetadataBlog = require("../core/MetadataBlog.js");
/****************************************************************************/
module.exports = function(callback) {
console.log("sitemap.js triggered...");
let urls = [];
let files = glob.sync(CWD + "/pages/**/*.js");
let languages = null;
languages = require(CWD + "/languages.js");
let enabledLanguages = languages.filter(lang => {
return lang.enabled == true;
});
files.map(file => {
enabledLanguages.map(lang => {
let url = file.split("/pages/en")[1];
let tag = "";
if (lang.tag != "en") {
tag = lang.tag;
}
url = tag + url;
url = url.replace(/\.js$/, ".html");
urls.push({ url: "/" + url, changefreq: "weekly", priority: 0.5 });
});
});
let htmlFiles = glob.sync(CWD + "/pages/**/*.html");
MetadataBlog.map(blog => {
urls.push({
url: "/blog/" + blog.path,
changefreq: "weekly",
priority: 0.3
});
});
Object.keys(Metadata).map(key => {
let doc = Metadata[key];
urls.push({ url: doc.permalink, changefreq: "hourly", priority: 1.0 });
});
const sm = sitemap.createSitemap({
hostname: siteConfig.url,
cacheTime: 600 * 1000, // 600 sec - cache purge period
urls: urls
});
sm.toXML((err, xml) => {
if (err) {
return "An error has occured.";
}
callback(xml);
});
};