mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-21 04:57:05 +02:00
ESLintify Part 2 (#841)
* ESLintify Part 2 * Fix * Fix tests * Fix tests * Fix tests
This commit is contained in:
parent
4267337fb0
commit
5ac2cee658
42 changed files with 188 additions and 190 deletions
|
@ -9,6 +9,7 @@ const CWD = process.cwd();
|
|||
const fs = require('fs-extra');
|
||||
const path = require('path');
|
||||
const chalk = require('chalk');
|
||||
|
||||
const siteConfig = require(CWD + '/siteConfig.js');
|
||||
|
||||
const join = path.join;
|
||||
|
|
|
@ -6,9 +6,11 @@
|
|||
*/
|
||||
|
||||
const Feed = require('feed');
|
||||
|
||||
const CWD = process.cwd();
|
||||
const siteConfig = require(CWD + '/siteConfig.js');
|
||||
const readMetadata = require('./readMetadata.js');
|
||||
|
||||
const blogRootURL = siteConfig.url + siteConfig.baseUrl + 'blog';
|
||||
const siteImageURL =
|
||||
siteConfig.url + siteConfig.baseUrl + siteConfig.headerIcon;
|
||||
|
|
|
@ -158,7 +158,7 @@ async function execute() {
|
|||
rawContent = insertTableOfContents(rawContent);
|
||||
}
|
||||
|
||||
let defaultVersion = env.versioning.defaultVersion;
|
||||
const defaultVersion = env.versioning.defaultVersion;
|
||||
|
||||
// replace any links to markdown files to their website html links
|
||||
Object.keys(mdToHtml).forEach(key => {
|
||||
|
@ -250,7 +250,7 @@ async function execute() {
|
|||
.forEach(file => {
|
||||
// Why normalize? In case we are on Windows.
|
||||
// Remember the nuance of glob: https://www.npmjs.com/package/glob#windows
|
||||
let normalizedFile = path.normalize(file);
|
||||
const normalizedFile = path.normalize(file);
|
||||
const extension = path.extname(normalizedFile);
|
||||
if (extension !== '.md' && extension !== '.markdown') {
|
||||
return;
|
||||
|
@ -273,7 +273,7 @@ async function execute() {
|
|||
);
|
||||
metadata.id = metadata.title;
|
||||
|
||||
let language = 'en';
|
||||
const language = 'en';
|
||||
const blogPostComp = (
|
||||
<BlogPostLayout
|
||||
metadata={metadata}
|
||||
|
@ -284,15 +284,15 @@ async function execute() {
|
|||
);
|
||||
const str = renderToStaticMarkupWithDoctype(blogPostComp);
|
||||
|
||||
let targetFile = join(buildDir, 'blog', filePath);
|
||||
const targetFile = join(buildDir, '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 language = 'en';
|
||||
const metadata = {page, perPage};
|
||||
const blogPageComp = (
|
||||
<BlogPageLayout
|
||||
metadata={metadata}
|
||||
|
@ -302,7 +302,7 @@ async function execute() {
|
|||
);
|
||||
const str = renderToStaticMarkupWithDoctype(blogPageComp);
|
||||
|
||||
let targetFile = join(
|
||||
const targetFile = join(
|
||||
buildDir,
|
||||
'blog',
|
||||
page > 0 ? 'page' + (page + 1) : '',
|
||||
|
@ -389,7 +389,7 @@ async function execute() {
|
|||
files.forEach(file => {
|
||||
// Why normalize? In case we are on Windows.
|
||||
// Remember the nuance of glob: https://www.npmjs.com/package/glob#windows
|
||||
let normalizedFile = path.normalize(file);
|
||||
const normalizedFile = path.normalize(file);
|
||||
// parse css files to replace colors and fonts according to siteConfig
|
||||
if (normalizedFile.match(/\.css$/) && !isSeparateCss(normalizedFile)) {
|
||||
const mainCss = join(buildDir, 'css', 'main.css');
|
||||
|
@ -453,7 +453,7 @@ async function execute() {
|
|||
files.forEach(file => {
|
||||
// Why normalize? In case we are on Windows.
|
||||
// Remember the nuance of glob: https://www.npmjs.com/package/glob#windows
|
||||
let normalizedFile = path.normalize(file);
|
||||
const normalizedFile = path.normalize(file);
|
||||
// render .js files to strings
|
||||
if (normalizedFile.match(/\.js$/)) {
|
||||
const pageID = path.basename(normalizedFile, '.js');
|
||||
|
@ -511,7 +511,7 @@ async function execute() {
|
|||
}
|
||||
|
||||
// write to base level
|
||||
let language = env.translation.enabled ? 'en' : '';
|
||||
const language = env.translation.enabled ? 'en' : '';
|
||||
translate.setLanguage(language);
|
||||
const str = renderToStaticMarkupWithDoctype(
|
||||
<Site
|
||||
|
@ -529,7 +529,7 @@ async function execute() {
|
|||
);
|
||||
} else {
|
||||
// allow for rendering of other files not in pages/en folder
|
||||
let language = env.translation.enabled ? 'en' : '';
|
||||
const language = env.translation.enabled ? 'en' : '';
|
||||
translate.setLanguage(language);
|
||||
const str = renderToStaticMarkupWithDoctype(
|
||||
<Site
|
||||
|
@ -564,8 +564,8 @@ async function execute() {
|
|||
writeFileAndCreateFolder(targetFile, str);
|
||||
} else if (!fs.lstatSync(normalizedFile).isDirectory()) {
|
||||
// copy other non .js files
|
||||
let parts = normalizedFile.split('pages');
|
||||
let targetFile = join(buildDir, parts[1]);
|
||||
const parts = normalizedFile.split('pages');
|
||||
const targetFile = join(buildDir, parts[1]);
|
||||
mkdirp.sync(path.dirname(targetFile));
|
||||
fs.copySync(normalizedFile, targetFile);
|
||||
}
|
||||
|
@ -573,7 +573,7 @@ async function execute() {
|
|||
|
||||
// Generate CNAME file if a custom domain is specified in siteConfig
|
||||
if (siteConfig.cname) {
|
||||
let targetFile = join(buildDir, 'CNAME');
|
||||
const targetFile = join(buildDir, 'CNAME');
|
||||
fs.writeFileSync(targetFile, siteConfig.cname);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ const glob = require('glob');
|
|||
const metadataUtils = require('./metadataUtils');
|
||||
|
||||
const env = require('./env.js');
|
||||
|
||||
const siteConfig = require(CWD + '/siteConfig.js');
|
||||
const versionFallback = require('./versionFallback.js');
|
||||
const utils = require('./utils.js');
|
||||
|
@ -56,7 +57,7 @@ function readSidebar() {
|
|||
const categories = allSidebars[sidebar];
|
||||
|
||||
let ids = [];
|
||||
let categoryOrder = [];
|
||||
const categoryOrder = [];
|
||||
Object.keys(categories).forEach(category => {
|
||||
ids = ids.concat(categories[category]);
|
||||
for (let i = 0; i < categories[category].length; i++) {
|
||||
|
@ -71,9 +72,9 @@ function readSidebar() {
|
|||
if (i > 0) previous = ids[i - 1];
|
||||
if (i < ids.length - 1) next = ids[i + 1];
|
||||
order[id] = {
|
||||
previous: previous,
|
||||
next: next,
|
||||
sidebar: sidebar,
|
||||
previous,
|
||||
next,
|
||||
sidebar,
|
||||
category: categoryOrder[i],
|
||||
};
|
||||
}
|
||||
|
@ -156,7 +157,7 @@ function processMetadata(file, refDir) {
|
|||
}
|
||||
}
|
||||
|
||||
return {metadata, rawContent: rawContent};
|
||||
return {metadata, rawContent};
|
||||
}
|
||||
|
||||
// process metadata for all docs and save into core/metadata.js
|
||||
|
@ -188,7 +189,7 @@ function generateMetadataDocs() {
|
|||
if (!res) {
|
||||
return;
|
||||
}
|
||||
let metadata = res.metadata;
|
||||
const metadata = res.metadata;
|
||||
metadatas[metadata.id] = metadata;
|
||||
|
||||
// create a default list of documents for each enabled language based on docs in English
|
||||
|
@ -196,24 +197,24 @@ function generateMetadataDocs() {
|
|||
enabledLanguages
|
||||
.filter(currentLanguage => currentLanguage !== 'en')
|
||||
.forEach(currentLanguage => {
|
||||
let baseMetadata = Object.assign({}, metadata);
|
||||
baseMetadata['id'] = baseMetadata['id']
|
||||
const baseMetadata = Object.assign({}, metadata);
|
||||
baseMetadata.id = baseMetadata.id
|
||||
.toString()
|
||||
.replace(/^en-/, currentLanguage + '-');
|
||||
if (baseMetadata['permalink'])
|
||||
baseMetadata['permalink'] = baseMetadata['permalink']
|
||||
if (baseMetadata.permalink)
|
||||
baseMetadata.permalink = baseMetadata.permalink
|
||||
.toString()
|
||||
.replace(/^docs\/en\//, 'docs/' + currentLanguage + '/');
|
||||
if (baseMetadata['next'])
|
||||
baseMetadata['next'] = baseMetadata['next']
|
||||
if (baseMetadata.next)
|
||||
baseMetadata.next = baseMetadata.next
|
||||
.toString()
|
||||
.replace(/^en-/, currentLanguage + '-');
|
||||
if (baseMetadata['previous'])
|
||||
baseMetadata['previous'] = baseMetadata['previous']
|
||||
if (baseMetadata.previous)
|
||||
baseMetadata.previous = baseMetadata.previous
|
||||
.toString()
|
||||
.replace(/^en-/, currentLanguage + '-');
|
||||
baseMetadata['language'] = currentLanguage;
|
||||
defaultMetadatas[baseMetadata['id']] = baseMetadata;
|
||||
baseMetadata.language = currentLanguage;
|
||||
defaultMetadatas[baseMetadata.id] = baseMetadata;
|
||||
});
|
||||
Object.assign(metadatas, defaultMetadatas);
|
||||
}
|
||||
|
@ -234,7 +235,7 @@ function generateMetadataDocs() {
|
|||
if (!res) {
|
||||
return;
|
||||
}
|
||||
let metadata = res.metadata;
|
||||
const metadata = res.metadata;
|
||||
metadatas[metadata.id] = metadata;
|
||||
}
|
||||
});
|
||||
|
@ -305,7 +306,7 @@ function generateMetadataDocs() {
|
|||
function generateMetadataBlog() {
|
||||
const metadatas = [];
|
||||
|
||||
let files = glob.sync(CWD + '/blog/**/*.*');
|
||||
const files = glob.sync(CWD + '/blog/**/*.*');
|
||||
files
|
||||
.sort()
|
||||
.reverse()
|
||||
|
@ -336,7 +337,7 @@ function generateMetadataBlog() {
|
|||
metadata.id = metadata.title;
|
||||
|
||||
// Extract, YYYY, MM, DD from the file name
|
||||
let filePathDateArr = path
|
||||
const filePathDateArr = path
|
||||
.basename(file)
|
||||
.toString()
|
||||
.split('-');
|
||||
|
|
|
@ -71,9 +71,7 @@ function execute(port, options) {
|
|||
}
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
let readMetadata = require('./readMetadata.js');
|
||||
const readMetadata = require('./readMetadata.js');
|
||||
let Metadata;
|
||||
let MetadataBlog;
|
||||
let siteConfig;
|
||||
|
@ -103,8 +101,6 @@ function execute(port, options) {
|
|||
}
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const TABLE_OF_CONTENTS_TOKEN = '<AUTOGENERATED_TABLE_OF_CONTENTS>';
|
||||
|
||||
const insertTableOfContents = rawContent => {
|
||||
|
@ -119,8 +115,6 @@ function execute(port, options) {
|
|||
return rawContent.replace(TABLE_OF_CONTENTS_TOKEN, tableOfContents);
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
function isSeparateCss(file) {
|
||||
if (!siteConfig.separateCss) {
|
||||
return false;
|
||||
|
@ -181,8 +175,6 @@ function execute(port, options) {
|
|||
);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
reloadMetadata();
|
||||
reloadMetadataBlog();
|
||||
extractTranslations();
|
||||
|
@ -192,10 +184,10 @@ function execute(port, options) {
|
|||
|
||||
// handle all requests for document pages
|
||||
app.get(docsRouting(siteConfig.baseUrl), (req, res, next) => {
|
||||
let url = req.path.toString().replace(siteConfig.baseUrl, '');
|
||||
const url = req.path.toString().replace(siteConfig.baseUrl, '');
|
||||
|
||||
// links is a map from a permalink to an id for each document
|
||||
let links = {};
|
||||
const links = {};
|
||||
Object.keys(Metadata).forEach(id => {
|
||||
const metadata = Metadata[id];
|
||||
links[metadata.permalink] = id;
|
||||
|
@ -254,7 +246,7 @@ function execute(port, options) {
|
|||
rawContent = insertTableOfContents(rawContent);
|
||||
}
|
||||
|
||||
let defaultVersion = env.versioning.defaultVersion;
|
||||
const defaultVersion = env.versioning.defaultVersion;
|
||||
|
||||
// replace any links to markdown files to their website html links
|
||||
Object.keys(mdToHtml).forEach(key => {
|
||||
|
@ -326,7 +318,7 @@ function execute(port, options) {
|
|||
|
||||
app.get(feedRouting(siteConfig.baseUrl), (req, res, next) => {
|
||||
res.set('Content-Type', 'application/rss+xml');
|
||||
let file = req.path
|
||||
const file = req.path
|
||||
.toString()
|
||||
.split('blog/')[1]
|
||||
.toLowerCase();
|
||||
|
@ -354,8 +346,8 @@ function execute(port, options) {
|
|||
page < Math.ceil(MetadataBlog.length / perPage);
|
||||
page++
|
||||
) {
|
||||
let language = 'en';
|
||||
const metadata = {page: page, perPage: perPage};
|
||||
const language = 'en';
|
||||
const metadata = {page, perPage};
|
||||
const blogPageComp = (
|
||||
<BlogPageLayout
|
||||
metadata={metadata}
|
||||
|
@ -369,7 +361,7 @@ function execute(port, options) {
|
|||
blogPages[pagePath] = str;
|
||||
}
|
||||
|
||||
let parts = req.path.toString().split('blog/');
|
||||
const parts = req.path.toString().split('blog/');
|
||||
// send corresponding blog page if appropriate
|
||||
if (parts[1] === 'index.html') {
|
||||
res.send(blogPages['/index.html']);
|
||||
|
@ -412,7 +404,7 @@ function execute(port, options) {
|
|||
);
|
||||
metadata.id = metadata.title;
|
||||
|
||||
let language = 'en';
|
||||
const language = 'en';
|
||||
removeModuleAndChildrenFromCache(join('..', 'core', 'BlogPostLayout.js'));
|
||||
const BlogPostLayout = require(join('..', 'core', 'BlogPostLayout.js'));
|
||||
|
||||
|
@ -502,7 +494,7 @@ function execute(port, options) {
|
|||
fs.existsSync((userFile = englishFile))
|
||||
) {
|
||||
// copy into docusaurus so require paths work
|
||||
let userFileParts = userFile.split('pages' + sep);
|
||||
const userFileParts = userFile.split('pages' + sep);
|
||||
let tempFile = join(__dirname, '..', 'pages', userFileParts[1]);
|
||||
tempFile = tempFile.replace(
|
||||
path.basename(file),
|
||||
|
@ -546,7 +538,7 @@ function execute(port, options) {
|
|||
);
|
||||
let cssContent = fs.readFileSync(mainCssPath, {encoding: 'utf8'});
|
||||
|
||||
let files = glob.sync(join(CWD, 'static', '**', '*.css'));
|
||||
const files = glob.sync(join(CWD, 'static', '**', '*.css'));
|
||||
|
||||
files.forEach(file => {
|
||||
if (isSeparateCss(file)) {
|
||||
|
@ -604,8 +596,8 @@ function execute(port, options) {
|
|||
// "redirect" requests to pages ending with "/" or no extension so that,
|
||||
// for example, request to "blog" returns "blog/index.html" or "blog.html"
|
||||
app.get(noExtRouting(), (req, res, next) => {
|
||||
let slash = req.path.toString().endsWith('/') ? '' : '/';
|
||||
let requestUrl = 'http://localhost:' + port + req.path;
|
||||
const slash = req.path.toString().endsWith('/') ? '' : '/';
|
||||
const requestUrl = 'http://localhost:' + port + req.path;
|
||||
requestFile(requestUrl + slash + 'index.html', res, () => {
|
||||
requestFile(
|
||||
slash === '/'
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
const fs = require('fs-extra');
|
||||
|
||||
const glob = require('glob');
|
||||
|
||||
const CWD = process.cwd();
|
||||
|
||||
const sitemap = require('sitemap');
|
||||
|
@ -15,24 +16,18 @@ const utils = require('../core/utils');
|
|||
|
||||
const siteConfig = require(CWD + '/siteConfig.js');
|
||||
|
||||
/****************************************************************************/
|
||||
const readMetadata = require('./readMetadata.js');
|
||||
|
||||
let readMetadata;
|
||||
let Metadata;
|
||||
let MetadataBlog;
|
||||
|
||||
readMetadata = require('./readMetadata.js');
|
||||
readMetadata.generateMetadataDocs();
|
||||
Metadata = require('../core/metadata.js');
|
||||
readMetadata.generateMetadataBlog();
|
||||
MetadataBlog = require('../core/MetadataBlog.js');
|
||||
const Metadata = require('../core/metadata.js');
|
||||
|
||||
/****************************************************************************/
|
||||
readMetadata.generateMetadataBlog();
|
||||
const MetadataBlog = require('../core/MetadataBlog.js');
|
||||
|
||||
module.exports = function(callback) {
|
||||
console.log('sitemap.js triggered...');
|
||||
|
||||
let files = glob.sync(CWD + '/pages/en/**/*.js');
|
||||
const files = glob.sync(CWD + '/pages/en/**/*.js');
|
||||
|
||||
// English-only is the default.
|
||||
let enabledLanguages = [
|
||||
|
@ -45,7 +40,7 @@ module.exports = function(callback) {
|
|||
|
||||
// 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');
|
||||
const languages = require(CWD + '/languages.js');
|
||||
enabledLanguages = languages.filter(lang => lang.enabled);
|
||||
}
|
||||
|
||||
|
@ -56,7 +51,7 @@ module.exports = function(callback) {
|
|||
? url.replace(/\.js$/, '')
|
||||
: url.replace(/\.js$/, '.html');
|
||||
const links = enabledLanguages.map(lang => {
|
||||
let langUrl = lang.tag + url;
|
||||
const langUrl = lang.tag + url;
|
||||
return {lang: lang.tag, url: langUrl};
|
||||
});
|
||||
return {url, changefreq: 'weekly', priority: 0.5, links};
|
||||
|
@ -73,10 +68,10 @@ module.exports = function(callback) {
|
|||
Object.keys(Metadata)
|
||||
.filter(key => Metadata[key].language === 'en')
|
||||
.forEach(key => {
|
||||
let doc = Metadata[key];
|
||||
let docUrl = utils.getPath(doc.permalink, siteConfig.cleanUrl);
|
||||
let links = enabledLanguages.map(lang => {
|
||||
let langUrl = docUrl.replace('docs/en/', `docs/${lang.tag}/`);
|
||||
const doc = Metadata[key];
|
||||
const docUrl = utils.getPath(doc.permalink, siteConfig.cleanUrl);
|
||||
const links = enabledLanguages.map(lang => {
|
||||
const langUrl = docUrl.replace('docs/en/', `docs/${lang.tag}/`);
|
||||
return {lang: lang.tag, url: langUrl};
|
||||
});
|
||||
urls.push({
|
||||
|
|
|
@ -38,7 +38,7 @@ function translate(str) {
|
|||
if (!language || language === '') {
|
||||
// Check English, just in case; otherwise, just return the raw string back
|
||||
if (doesTranslationExist(str, 'en')) {
|
||||
return parseEscapeSequences(translation['en']['pages-strings'][str]);
|
||||
return parseEscapeSequences(translation.en['pages-strings'][str]);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
@ -54,7 +54,7 @@ function translate(str) {
|
|||
"'. Using English version instead."
|
||||
);
|
||||
|
||||
return parseEscapeSequences(translation['en']['pages-strings'][str]);
|
||||
return parseEscapeSequences(translation.en['pages-strings'][str]);
|
||||
}
|
||||
throw new Error(
|
||||
"Text that you've identified for translation ('" +
|
||||
|
@ -66,6 +66,6 @@ function translate(str) {
|
|||
}
|
||||
|
||||
module.exports = {
|
||||
setLanguage: setLanguage,
|
||||
translate: translate,
|
||||
setLanguage,
|
||||
translate,
|
||||
};
|
||||
|
|
|
@ -24,7 +24,7 @@ function getSubDir(file, refDir) {
|
|||
// (file: '/website/translated_docs/ko/projectA/test.md', refDir: 'website/translated_docs')
|
||||
// returns 'ko'
|
||||
function getLanguage(file, refDir) {
|
||||
let regexSubFolder = new RegExp(
|
||||
const regexSubFolder = new RegExp(
|
||||
'/' + escapeStringRegexp(path.basename(refDir)) + '/(.*)/.*/'
|
||||
);
|
||||
const match = regexSubFolder.exec(file);
|
||||
|
|
|
@ -14,6 +14,7 @@ const metadataUtils = require('./metadataUtils');
|
|||
|
||||
const env = require('./env.js');
|
||||
const utils = require('./utils.js');
|
||||
|
||||
const siteConfig = require(CWD + '/siteConfig.js');
|
||||
|
||||
const ENABLE_TRANSLATION = fs.existsSync(CWD + '/languages.js');
|
||||
|
@ -46,7 +47,7 @@ const available = {};
|
|||
// versionFiles is used to keep track of what file to use with a
|
||||
// given version/id of a document
|
||||
const versionFiles = {};
|
||||
let files = glob.sync(versionFolder + '**');
|
||||
const files = glob.sync(versionFolder + '**');
|
||||
files.forEach(file => {
|
||||
const ext = path.extname(file);
|
||||
if (ext !== '.md' && ext !== '.markdown') {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue