docusaurus/lib/server/sitemap.js
Joel Marcey 26f498a2db Add a check for languages.js in sitemap.js
Without this a build failure would occur for those that are not using the languages.js file.

e.g.,

```
sitemap.js triggered...
module.js:471
    throw err;
    ^

Error: Cannot find module '/home/ubuntu/fasttext-website/website/languages.js'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at module.exports (/home/ubuntu/fasttext-website/website/node_modules/docusaurus/lib/server/sitemap.js:48:15)
    at execute (/home/ubuntu/fasttext-website/website/node_modules/docusaurus/lib/server/generate.js:316:5)
    at Object.<anonymous> (/home/ubuntu/fasttext-website/website/node_modules/docusaurus/lib/build-files.js:31:1)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
Error: generating html failed
```
2017-10-18 15:43:25 -07:00

96 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;
if (fs.existsSync(CWD + "/languages.js")) {
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);
});
};