mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-10 15:47:23 +02:00
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:
parent
30eea17a24
commit
bcba05ae03
19 changed files with 495 additions and 245 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue