diff --git a/lib/commands/start.js b/lib/commands/start.js index a95d15d050..bc4a350520 100644 --- a/lib/commands/start.js +++ b/lib/commands/start.js @@ -39,7 +39,7 @@ module.exports = async function start(siteDir, cliOptions = {}) { console.error(chalk.red(err.stack)); }); }; - const docsRelativeDir = props.siteConfig.customDocsPath || 'docs'; + const docsRelativeDir = props.siteConfig.customDocsPath; const fsWatcher = chokidar.watch( [`../${docsRelativeDir}/**/*.md`, 'blog/**/*.md', 'siteConfig.js'], { diff --git a/lib/core/App.js b/lib/core/App.js index 3302a86ec3..c2970e4d3f 100644 --- a/lib/core/App.js +++ b/lib/core/App.js @@ -3,7 +3,7 @@ import {renderRoutes} from 'react-router-config'; import routes from '@generated/routes'; // eslint-disable-line import docsMetadata from '@generated/docsMetadata'; // eslint-disable-line import pagesMetadata from '@generated/pagesMetadata'; // eslint-disable-line -import siteConfig from '@site/siteConfig'; //eslint-disable-line +import siteConfig from '@generated/siteConfig'; //eslint-disable-line export default () => renderRoutes(routes, {docsMetadata, pagesMetadata, siteConfig}); diff --git a/lib/load/config.js b/lib/load/config.js index 1ef863e889..890b92ddfb 100644 --- a/lib/load/config.js +++ b/lib/load/config.js @@ -35,6 +35,17 @@ module.exports = function loadConfig(siteDir, deleteCache = true) { ); } + /* Fill default value */ + const defaultConfig = { + customDocsPath: 'docs', + docsUrl: 'docs' + }; + Object.keys(defaultConfig).forEach(field => { + if (!config[field]) { + config[field] = defaultConfig[field]; + } + }); + /* User's own array of custom fields, e.g: if they want to include some field so they can access it later from `props.siteConfig` diff --git a/lib/load/docs/metadata.js b/lib/load/docs/metadata.js index 165f343140..a3e1d9bb46 100644 --- a/lib/load/docs/metadata.js +++ b/lib/load/docs/metadata.js @@ -118,7 +118,7 @@ module.exports = async function processMetadata( } /* Build the permalink */ - const {baseUrl, docsUrl = 'docs'} = siteConfig; + const {baseUrl, docsUrl} = siteConfig; /* if user has own custom permalink defined in frontmatter diff --git a/lib/load/index.js b/lib/load/index.js index e7c91d005f..691e1a1232 100644 --- a/lib/load/index.js +++ b/lib/load/index.js @@ -10,23 +10,23 @@ const genRoutesConfig = require('./routes'); module.exports = async function load(siteDir) { // @tested - siteConfig const siteConfig = loadConfig(siteDir); + await generate( + 'siteConfig.js', + `export default ${JSON.stringify(siteConfig, null, 2)};` + ); // @tested - env const env = loadEnv({siteDir, siteConfig}); // docs - const docsDir = path.resolve( - siteDir, - '..', - siteConfig.customDocsPath || 'docs' - ); + const docsDir = path.resolve(siteDir, '..', siteConfig.customDocsPath); const docsMetadata = await loadDocs({siteDir, docsDir, env, siteConfig}); await generate( 'docsMetadata.js', `export default ${JSON.stringify(docsMetadata, null, 2)};` ); - /* Create source to permalink mapping */ + /* Create source to metadata mapping */ const sourceToMetadata = {}; Object.values(docsMetadata).forEach( ({source, version, permalink, language}) => { @@ -52,7 +52,7 @@ module.exports = async function load(siteDir) { // resolve the theme const themePath = loadTheme(siteDir); - const baseUrl = siteConfig.baseUrl || '/'; + const {baseUrl} = siteConfig; const versionedDir = path.join(siteDir, 'versioned_docs'); const translatedDir = path.join(siteDir, 'translated_docs');