mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-02 11:47:23 +02:00
chore: naming consistency
This commit is contained in:
parent
5eab627340
commit
c132c7445f
11 changed files with 62 additions and 56 deletions
|
@ -1,9 +1,9 @@
|
||||||
import {renderRoutes} from 'react-router-config';
|
import {renderRoutes} from 'react-router-config';
|
||||||
|
|
||||||
import routes from '@generated/routes'; // eslint-disable-line
|
import routes from '@generated/routes'; // eslint-disable-line
|
||||||
import docsMetadata from '@generated/docsMetadata'; // eslint-disable-line
|
import docsMetadatas from '@generated/docsMetadatas'; // eslint-disable-line
|
||||||
import pagesMetadata from '@generated/pagesMetadata'; // eslint-disable-line
|
import pagesMetadatas from '@generated/pagesMetadatas'; // eslint-disable-line
|
||||||
import siteConfig from '@generated/siteConfig'; //eslint-disable-line
|
import siteConfig from '@generated/siteConfig'; //eslint-disable-line
|
||||||
|
|
||||||
export default () =>
|
export default () =>
|
||||||
renderRoutes(routes, {docsMetadata, pagesMetadata, siteConfig});
|
renderRoutes(routes, {docsMetadatas, pagesMetadatas, siteConfig});
|
||||||
|
|
|
@ -7,10 +7,10 @@ const {getSubFolder, idx} = require('../utils');
|
||||||
|
|
||||||
async function loadDocs({siteDir, docsDir, env, siteConfig}) {
|
async function loadDocs({siteDir, docsDir, env, siteConfig}) {
|
||||||
// @tested - load all sidebars including versioned sidebars
|
// @tested - load all sidebars including versioned sidebars
|
||||||
const allSidebars = loadSidebars({siteDir, env});
|
const docsSidebars = loadSidebars({siteDir, env});
|
||||||
|
|
||||||
// @tested - build the docs ordering such as next, previous, category and sidebar
|
// @tested - build the docs ordering such as next, previous, category and sidebar
|
||||||
const order = createOrder(allSidebars);
|
const order = createOrder(docsSidebars);
|
||||||
|
|
||||||
/* Settle versions & translations from environment */
|
/* Settle versions & translations from environment */
|
||||||
const translationEnabled = idx(env, ['translation', 'enabled']);
|
const translationEnabled = idx(env, ['translation', 'enabled']);
|
||||||
|
@ -24,7 +24,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
|
||||||
(versioningEnabled && idx(env, ['versioning', 'versions'])) || [];
|
(versioningEnabled && idx(env, ['versioning', 'versions'])) || [];
|
||||||
|
|
||||||
/* Prepare metadata container */
|
/* Prepare metadata container */
|
||||||
const metadatas = {};
|
const docsMetadatas = {};
|
||||||
|
|
||||||
/* metadata for default docs files */
|
/* metadata for default docs files */
|
||||||
const docsFiles = await globby(['**/*.md'], {
|
const docsFiles = await globby(['**/*.md'], {
|
||||||
|
@ -49,7 +49,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
|
||||||
order,
|
order,
|
||||||
siteConfig
|
siteConfig
|
||||||
);
|
);
|
||||||
metadatas[metadata.id] = metadata;
|
docsMetadatas[metadata.id] = metadata;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -80,7 +80,7 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
|
||||||
order,
|
order,
|
||||||
siteConfig
|
siteConfig
|
||||||
);
|
);
|
||||||
metadatas[metadata.id] = metadata;
|
docsMetadatas[metadata.id] = metadata;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -98,27 +98,30 @@ async function loadDocs({siteDir, docsDir, env, siteConfig}) {
|
||||||
order,
|
order,
|
||||||
siteConfig
|
siteConfig
|
||||||
);
|
);
|
||||||
metadatas[metadata.id] = metadata;
|
docsMetadatas[metadata.id] = metadata;
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Get the titles of the previous and next ids so that we can use them
|
Get the titles of the previous and next ids so that we can use them
|
||||||
*/
|
*/
|
||||||
Object.keys(metadatas).forEach(currentID => {
|
Object.keys(docsMetadatas).forEach(currentID => {
|
||||||
const previousID = idx(metadatas, [currentID, 'previous']);
|
const previousID = idx(docsMetadatas, [currentID, 'previous']);
|
||||||
if (previousID) {
|
if (previousID) {
|
||||||
const previousTitle = idx(metadatas, [previousID, 'title']);
|
const previousTitle = idx(docsMetadatas, [previousID, 'title']);
|
||||||
metadatas[currentID].previous_title = previousTitle || 'Previous';
|
docsMetadatas[currentID].previous_title = previousTitle || 'Previous';
|
||||||
}
|
}
|
||||||
const nextID = idx(metadatas, [currentID, 'next']);
|
const nextID = idx(docsMetadatas, [currentID, 'next']);
|
||||||
if (nextID) {
|
if (nextID) {
|
||||||
const nextTitle = idx(metadatas, [nextID, 'title']);
|
const nextTitle = idx(docsMetadatas, [nextID, 'title']);
|
||||||
metadatas[currentID].next_title = nextTitle || 'Next';
|
docsMetadatas[currentID].next_title = nextTitle || 'Next';
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return metadatas;
|
return {
|
||||||
|
docsSidebars,
|
||||||
|
docsMetadatas
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = loadDocs;
|
module.exports = loadDocs;
|
||||||
|
|
|
@ -20,15 +20,15 @@ module.exports = async function load(siteDir) {
|
||||||
|
|
||||||
// docs
|
// docs
|
||||||
const docsDir = path.resolve(siteDir, '..', siteConfig.customDocsPath);
|
const docsDir = path.resolve(siteDir, '..', siteConfig.customDocsPath);
|
||||||
const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig});
|
const {docsMetadatas, docsSidebars} = await loadDocs({siteDir, docsDir, env, siteConfig});
|
||||||
await generate(
|
await generate(
|
||||||
'docsMetadata.js',
|
'docsMetadatas.js',
|
||||||
`export default ${JSON.stringify(docsMetadata, null, 2)};`
|
`export default ${JSON.stringify(docsMetadatas, null, 2)};`
|
||||||
);
|
);
|
||||||
|
|
||||||
/* Create source to metadata mapping */
|
/* Create source to metadata mapping */
|
||||||
const sourceToMetadata = {};
|
const sourceToMetadata = {};
|
||||||
Object.values(docsMetadata).forEach(
|
Object.values(docsMetadatas).forEach(
|
||||||
({source, version, permalink, language}) => {
|
({source, version, permalink, language}) => {
|
||||||
sourceToMetadata[source] = {
|
sourceToMetadata[source] = {
|
||||||
version,
|
version,
|
||||||
|
@ -40,10 +40,10 @@ module.exports = async function load(siteDir) {
|
||||||
|
|
||||||
// pages
|
// pages
|
||||||
const pagesDir = path.resolve(siteDir, 'pages');
|
const pagesDir = path.resolve(siteDir, 'pages');
|
||||||
const pagesMetadata = await loadPages(pagesDir);
|
const pagesMetadatas = await loadPages(pagesDir);
|
||||||
await generate(
|
await generate(
|
||||||
'pagesMetadata.js',
|
'pagesMetadatas.js',
|
||||||
`export default ${JSON.stringify(pagesMetadata, null, 2)};`
|
`export default ${JSON.stringify(pagesMetadatas, null, 2)};`
|
||||||
);
|
);
|
||||||
|
|
||||||
// resolve outDir
|
// resolve outDir
|
||||||
|
@ -60,10 +60,11 @@ module.exports = async function load(siteDir) {
|
||||||
siteConfig,
|
siteConfig,
|
||||||
siteDir,
|
siteDir,
|
||||||
docsDir,
|
docsDir,
|
||||||
docsMetadata,
|
docsMetadatas,
|
||||||
|
docsSidebars,
|
||||||
env,
|
env,
|
||||||
pagesDir,
|
pagesDir,
|
||||||
pagesMetadata,
|
pagesMetadatas,
|
||||||
outDir,
|
outDir,
|
||||||
themePath,
|
themePath,
|
||||||
baseUrl,
|
baseUrl,
|
||||||
|
|
|
@ -6,13 +6,13 @@ async function loadPages(pagesDir) {
|
||||||
cwd: pagesDir
|
cwd: pagesDir
|
||||||
});
|
});
|
||||||
|
|
||||||
const pagesMetadata = await Promise.all(
|
const pagesMetadatas = await Promise.all(
|
||||||
pagesFiles.map(async source => ({
|
pagesFiles.map(async source => ({
|
||||||
path: encodePath(fileToPath(source)),
|
path: encodePath(fileToPath(source)),
|
||||||
source
|
source
|
||||||
}))
|
}))
|
||||||
);
|
);
|
||||||
return pagesMetadata;
|
return pagesMetadatas;
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = loadPages;
|
module.exports = loadPages;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
async function genRoutesConfig({docsMetadata = {}, pagesMetadata = []}) {
|
async function genRoutesConfig({docsMetadatas = {}, pagesMetadatas = []}) {
|
||||||
function genDocsRoute(metadata) {
|
function genDocsRoute(metadata) {
|
||||||
const {permalink, source} = metadata;
|
const {permalink, source} = metadata;
|
||||||
return `
|
return `
|
||||||
|
@ -38,7 +38,7 @@ async function genRoutesConfig({docsMetadata = {}, pagesMetadata = []}) {
|
||||||
component: NotFound
|
component: NotFound
|
||||||
}`;
|
}`;
|
||||||
|
|
||||||
const docsRoutes = Object.values(docsMetadata)
|
const docsRoutes = Object.values(docsMetadatas)
|
||||||
.map(genDocsRoute)
|
.map(genDocsRoute)
|
||||||
.join(',');
|
.join(',');
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ async function genRoutesConfig({docsMetadata = {}, pagesMetadata = []}) {
|
||||||
`import Loading from '@theme/Loading';\n` +
|
`import Loading from '@theme/Loading';\n` +
|
||||||
`import Docs from '@theme/Docs';\n` +
|
`import Docs from '@theme/Docs';\n` +
|
||||||
`import NotFound from '@theme/NotFound';\n` +
|
`import NotFound from '@theme/NotFound';\n` +
|
||||||
`const routes = [${docsRoutes},${pagesMetadata
|
`const routes = [${docsRoutes},${pagesMetadatas
|
||||||
.map(genPagesRoute)
|
.map(genPagesRoute)
|
||||||
.join(',')}${notFoundRoute}\n];\n` +
|
.join(',')}${notFoundRoute}\n];\n` +
|
||||||
`export default routes;\n`
|
`export default routes;\n`
|
||||||
|
|
|
@ -7,7 +7,7 @@ import Layout from '@theme/Layout'; // eslint-disable-line
|
||||||
|
|
||||||
export default class Docs extends React.Component {
|
export default class Docs extends React.Component {
|
||||||
render() {
|
render() {
|
||||||
const {route, siteConfig, docsMetadata, metadata} = this.props;
|
const {route, siteConfig, docsMetadatas, metadata} = this.props;
|
||||||
return (
|
return (
|
||||||
<Layout {...this.props}>
|
<Layout {...this.props}>
|
||||||
<Helmet>
|
<Helmet>
|
||||||
|
@ -15,16 +15,16 @@ export default class Docs extends React.Component {
|
||||||
</Helmet>
|
</Helmet>
|
||||||
<div>
|
<div>
|
||||||
{metadata.previous &&
|
{metadata.previous &&
|
||||||
docsMetadata[metadata.previous] && (
|
docsMetadatas[metadata.previous] && (
|
||||||
<Link to={docsMetadata[metadata.previous].permalink}>
|
<Link to={docsMetadatas[metadata.previous].permalink}>
|
||||||
<span>← {metadata.previous_title}</span>
|
<span>← {metadata.previous_title}</span>
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
{metadata.next &&
|
{metadata.next &&
|
||||||
docsMetadata[metadata.next] && (
|
docsMetadatas[metadata.next] && (
|
||||||
<Link to={docsMetadata[metadata.next].permalink}>
|
<Link to={docsMetadatas[metadata.next].permalink}>
|
||||||
<span>{metadata.next_title} →</span>
|
<span>{metadata.next_title} →</span>
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -5,11 +5,11 @@ import styles from './styles.css';
|
||||||
/* eslint-disable react/prefer-stateless-function */
|
/* eslint-disable react/prefer-stateless-function */
|
||||||
export default class Layout extends React.Component {
|
export default class Layout extends React.Component {
|
||||||
render() {
|
render() {
|
||||||
const {children, pagesMetadata, docsMetadata = {}, location} = this.props;
|
const {children, pagesMetadatas, docsMetadatas = {}, location} = this.props;
|
||||||
const docsLinks = Object.values(docsMetadata).map(data => ({
|
const docsLinks = Object.values(docsMetadatas).map(data => ({
|
||||||
path: `${data.permalink}`
|
path: `${data.permalink}`
|
||||||
}));
|
}));
|
||||||
const routeLinks = [...pagesMetadata, ...docsLinks].map(
|
const routeLinks = [...pagesMetadatas, ...docsLinks].map(
|
||||||
data =>
|
data =>
|
||||||
data.path !== location.pathname && (
|
data.path !== location.pathname && (
|
||||||
<li key={data.path}>
|
<li key={data.path}>
|
||||||
|
|
|
@ -14,13 +14,13 @@ module.exports = function createServerConfig(props) {
|
||||||
// Workaround for Webpack 4 Bug (https://github.com/webpack/webpack/issues/6522)
|
// Workaround for Webpack 4 Bug (https://github.com/webpack/webpack/issues/6522)
|
||||||
config.output.globalObject('this');
|
config.output.globalObject('this');
|
||||||
|
|
||||||
const {siteConfig, docsMetadata, pagesMetadata} = props;
|
const {siteConfig, docsMetadatas, pagesMetadatas} = props;
|
||||||
|
|
||||||
// static site generator webpack plugin
|
// static site generator webpack plugin
|
||||||
const docsLinks = Object.values(docsMetadata).map(data => ({
|
const docsLinks = Object.values(docsMetadatas).map(data => ({
|
||||||
path: `${data.permalink}`
|
path: `${data.permalink}`
|
||||||
}));
|
}));
|
||||||
const paths = [...docsLinks, ...pagesMetadata].map(data => data.path);
|
const paths = [...docsLinks, ...pagesMetadatas].map(data => data.path);
|
||||||
config.plugin('siteGenerator').use(staticSiteGenerator, [
|
config.plugin('siteGenerator').use(staticSiteGenerator, [
|
||||||
{
|
{
|
||||||
entry: 'main',
|
entry: 'main',
|
||||||
|
|
|
@ -8,6 +8,8 @@ describe('loadConfig', () => {
|
||||||
expect(config).toEqual({
|
expect(config).toEqual({
|
||||||
baseUrl: '/',
|
baseUrl: '/',
|
||||||
organizationName: 'endiliey',
|
organizationName: 'endiliey',
|
||||||
|
customDocsPath: 'docs',
|
||||||
|
docsUrl: 'docs',
|
||||||
projectName: 'hello',
|
projectName: 'hello',
|
||||||
tagline: 'Hello World',
|
tagline: 'Hello World',
|
||||||
title: 'Hello'
|
title: 'Hello'
|
||||||
|
|
|
@ -5,28 +5,28 @@ describe('loadDocs', () => {
|
||||||
test('simple website', async () => {
|
test('simple website', async () => {
|
||||||
const props = await loadSetup('simple');
|
const props = await loadSetup('simple');
|
||||||
const {siteDir, docsDir, env, siteConfig} = props;
|
const {siteDir, docsDir, env, siteConfig} = props;
|
||||||
const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig});
|
const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig});
|
||||||
expect(docsMetadata).toMatchSnapshot();
|
expect(docsMetadatas).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('versioned website', async () => {
|
test('versioned website', async () => {
|
||||||
const props = await loadSetup('versioned');
|
const props = await loadSetup('versioned');
|
||||||
const {siteDir, docsDir, env, siteConfig} = props;
|
const {siteDir, docsDir, env, siteConfig} = props;
|
||||||
const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig});
|
const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig});
|
||||||
expect(docsMetadata).toMatchSnapshot();
|
expect(docsMetadatas).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('versioned & translated website', async () => {
|
test('versioned & translated website', async () => {
|
||||||
const props = await loadSetup('transversioned');
|
const props = await loadSetup('transversioned');
|
||||||
const {siteDir, docsDir, env, siteConfig} = props;
|
const {siteDir, docsDir, env, siteConfig} = props;
|
||||||
const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig});
|
const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig});
|
||||||
expect(docsMetadata).toMatchSnapshot();
|
expect(docsMetadatas).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('translated website', async () => {
|
test('translated website', async () => {
|
||||||
const props = await loadSetup('translated');
|
const props = await loadSetup('translated');
|
||||||
const {siteDir, docsDir, env, siteConfig} = props;
|
const {siteDir, docsDir, env, siteConfig} = props;
|
||||||
const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig});
|
const {docsMetadatas} = await loadDocs({siteDir, docsDir, env, siteConfig});
|
||||||
expect(docsMetadata).toMatchSnapshot();
|
expect(docsMetadatas).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -4,9 +4,9 @@ import path from 'path';
|
||||||
describe('loadPages', () => {
|
describe('loadPages', () => {
|
||||||
test('valid pages', async () => {
|
test('valid pages', async () => {
|
||||||
const pagesDir = path.join(__dirname, '__fixtures__', 'simple-pages');
|
const pagesDir = path.join(__dirname, '__fixtures__', 'simple-pages');
|
||||||
const pagesMetadata = await loadPages(pagesDir);
|
const pagesMetadatas = await loadPages(pagesDir);
|
||||||
pagesMetadata.sort((a, b) => a.path > b.path); // because it was unordered
|
pagesMetadatas.sort((a, b) => a.path > b.path); // because it was unordered
|
||||||
expect(pagesMetadata).toEqual([
|
expect(pagesMetadatas).toEqual([
|
||||||
{
|
{
|
||||||
path: '/',
|
path: '/',
|
||||||
source: 'index.js'
|
source: 'index.js'
|
||||||
|
@ -24,12 +24,12 @@ describe('loadPages', () => {
|
||||||
source: 'foo/index.js'
|
source: 'foo/index.js'
|
||||||
}
|
}
|
||||||
]);
|
]);
|
||||||
expect(pagesMetadata).not.toBeNull();
|
expect(pagesMetadatas).not.toBeNull();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('invalid pages', async () => {
|
test('invalid pages', async () => {
|
||||||
const nonExistingDir = path.join(__dirname, '__fixtures__', 'nonExisting');
|
const nonExistingDir = path.join(__dirname, '__fixtures__', 'nonExisting');
|
||||||
const pagesMetadata = await loadPages(nonExistingDir);
|
const pagesMetadatas = await loadPages(nonExistingDir);
|
||||||
expect(pagesMetadata).toEqual([]);
|
expect(pagesMetadatas).toEqual([]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue