/** * 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/en/**/*.js"); // English-only is the default. let enabledLanguages = [{ enabled: true, name: "English", tag: "en" }]; // If we have a languages.js file, get all the enabled languages in there if (fs.existsSync(CWD + "/languages.js")) { let languages = require(CWD + "/languages.js"); enabledLanguages = languages.filter(lang => { return lang.enabled == true; }); } // create a url mapping to all the enabled languages files files.map(file => { let url = file.split("/pages/en")[1]; url = url.replace(/\.js$/, ".html"); let links = enabledLanguages.map(lang => { let langUrl = lang.tag + url; return { lang: lang.tag, url: langUrl }; }); urls.push({ url, changefreq: "weekly", priority: 0.5, links }); }); let htmlFiles = glob.sync(CWD + "/pages/**/*.html"); MetadataBlog.map(blog => { urls.push({ url: "/blog/" + blog.path, changefreq: "weekly", priority: 0.3 }); }); Object.keys(Metadata).filter(key => Metadata[key].language === "en").map(key => { let doc = Metadata[key]; let links = enabledLanguages.map(lang => { let langUrl = doc.permalink.replace("docs/en/", `docs/${lang.tag}/`); return { lang: lang.tag, url: langUrl }; }); urls.push({ url: doc.permalink, changefreq: "hourly", priority: 1.0, links }); }); 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); }); };