chore: prepare for docs sidebar

This commit is contained in:
endiliey 2018-09-07 13:59:17 +08:00
parent 2141e6ea90
commit b477863a30
9 changed files with 350 additions and 2 deletions

34
lib/load/docs/sidebars.js Normal file
View file

@ -0,0 +1,34 @@
const fs = require('fs-extra');
const path = require('path');
const {idx} = require('../utils');
module.exports = function loadSidebars({siteDir, env}) {
let allSidebars = {};
// current sidebars
const sidebarsJSONFile = path.join(siteDir, 'sidebars.json');
if (fs.existsSync(sidebarsJSONFile)) {
allSidebars = require(sidebarsJSONFile);
}
// versioned sidebars
if (idx(env, ['versioning', 'enabled'])) {
const versions = idx(env, ['versioning', 'versions']);
versions &&
versions.forEach(version => {
const versionedSidebarsJSONFile = path.join(
siteDir,
'versioned_sidebars',
`version-${version}-sidebars.json`
);
if (fs.existsSync(versionedSidebarsJSONFile)) {
const sidebar = require(versionedSidebarsJSONFile);
Object.assign(allSidebars, sidebar);
} else {
const missingFile = path.relative(siteDir, versionedSidebarsJSONFile);
throw new Error(`Failed to load ${missingFile}. It does not exist.`);
}
});
}
return allSidebars;
};