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.
This commit is contained in:
Eric Nakagawa 2017-10-18 12:55:58 -07:00 committed by Joel Marcey
parent 30eea17a24
commit bcba05ae03
19 changed files with 495 additions and 245 deletions

View file

@ -6,6 +6,8 @@
*/
function execute() {
const extractTranslations = require("../write-translations.js");
const CWD = process.cwd();
const fs = require("fs-extra");
const readMetadata = require("./readMetadata.js");
@ -22,6 +24,7 @@ function execute() {
const versionFallback = require("./versionFallback.js");
const feed = require("./feed.js");
const sitemap = require("./sitemap.js");
const ENABLE_TRANSLATION = fs.existsSync(CWD + "/languages.js");
const ENABLE_VERSIONING = fs.existsSync(CWD + "/versions.json");
@ -86,7 +89,7 @@ function execute() {
enabledLanguages.push(lang.tag);
});
readMetadata.generateDocsMetadata();
readMetadata.generateMetadataDocs();
const Metadata = require("../core/metadata.js");
// mdToHtml is a map from a markdown file name to its html link, used to
@ -205,57 +208,59 @@ function execute() {
if (fs.existsSync(__dirname + "../core/MetadataBlog.js")) {
fs.removeSync(__dirname + "../core/MetadataBlog.js");
}
readMetadata.generateBlogMetadata();
readMetadata.generateMetadataBlog();
const MetadataBlog = require("../core/MetadataBlog.js");
const BlogPostLayout = require("../core/BlogPostLayout.js");
let files = glob.sync(CWD + "/blog/**/*.*");
files.sort().reverse().forEach(file => {
const extension = path.extname(file);
if (extension !== ".md" && extension !== ".markdown") {
return;
}
files
.sort()
.reverse()
.forEach(file => {
const extension = path.extname(file);
if (extension !== ".md" && extension !== ".markdown") {
return;
}
// convert filename to use slashes
const filePath = path
.basename(file)
.replace("-", "/")
.replace("-", "/")
.replace("-", "/")
.replace(/\./g, "-")
.replace(/\-md$/, ".html");
const result = readMetadata.extractMetadata(
fs.readFileSync(file, {encoding: "utf8"})
);
const rawContent = result.rawContent;
const metadata = Object.assign(
{path: filePath, content: rawContent},
result.metadata
);
metadata.id = metadata.title;
// convert filename to use slashes
const filePath = path
.basename(file)
.replace("-", "/")
.replace("-", "/")
.replace("-", "/")
.replace(/\./g, "-")
.replace(/\-md$/, ".html");
const result = readMetadata.extractMetadata(
fs.readFileSync(file, { encoding: "utf8" })
);
const rawContent = result.rawContent;
const metadata = Object.assign(
{ path: filePath, content: rawContent },
result.metadata
);
metadata.id = metadata.title;
let language = "en";
const blogPostComp = (
<BlogPostLayout
metadata={metadata}
language={language}
config={siteConfig}
>
{rawContent}
</BlogPostLayout>
);
const str = renderToStaticMarkup(blogPostComp);
let language = "en";
const blogPostComp = (
<BlogPostLayout
metadata={metadata}
language={language}
config={siteConfig}>
{rawContent}
</BlogPostLayout>
);
const str = renderToStaticMarkup(blogPostComp);
let targetFile =
CWD + "/build/" + siteConfig.projectName + "/blog/" + filePath;
writeFileAndCreateFolder(targetFile, str);
});
let targetFile =
CWD + "/build/" + siteConfig.projectName + "/blog/" + filePath;
writeFileAndCreateFolder(targetFile, str);
});
// create html files for all blog pages (collections of article previews)
const BlogPageLayout = require("../core/BlogPageLayout.js");
const perPage = 10;
for (let page = 0; page < Math.ceil(MetadataBlog.length / perPage); page++) {
let language = "en";
const metadata = {page: page, perPage: perPage};
const metadata = { page: page, perPage: perPage };
const blogPageComp = (
<BlogPageLayout
metadata={metadata}
@ -277,13 +282,20 @@ function execute() {
// create rss files for all blog pages, if there are any blog files
if (MetadataBlog.length > 0) {
let targetFile =
CWD + "/build/" + siteConfig.projectName + "/blog/" + "feed.xml";
CWD + "/build/" + siteConfig.projectName + "/blog/feed.xml";
writeFileAndCreateFolder(targetFile, feed());
targetFile =
CWD + "/build/" + siteConfig.projectName + "/blog/" + "atom.xml";
targetFile = CWD + "/build/" + siteConfig.projectName + "/blog/atom.xml";
writeFileAndCreateFolder(targetFile, feed("atom"));
}
// create sitemap
if (MetadataBlog.length > 0 && Object.keys(Metadata).length > 0) {
let targetFile = CWD + "/build/" + siteConfig.projectName + "/sitemap.xml";
sitemap(xml => {
writeFileAndCreateFolder(targetFile, xml);
});
}
// copy blog assets if they exist
if (fs.existsSync(CWD + "/blog/assets")) {
fs.copySync(
@ -357,6 +369,7 @@ function execute() {
});
// compile/copy pages from user
let pagesArr = [];
files = glob.sync(CWD + "/pages/**");
files.forEach(file => {
// render .js files to strings