mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-12 16:47:26 +02:00
feat(v2): docs versioning ❄️🔥 (#1983)
* wip: versioning * wip again * nits lint * refactor metadata code so that we can have inobject properties optimization, fix typing * remove buggy permalink code * modify versioned docs fixture such that foo/baz only exists in v1.0.0 * refactor metadata.ts so that there is less transformon object * more refactoring * reduce test fixtures, refactoring * refactoring readability * finish metadata part * refactor with readdir * first pass of implementation * fix mdx laoder * split generated routes by version for performance & smaller bundle * test data for demo * refactor with set * more tests * typo * fix typo * better temporary ui * stronger typing & docsVersion command * add 100% test coverage for docsVersion command * more test and delete manual docs cut * cut 2.0.0-alpha.35 docs * cut alpha.36 instead * copyright * delete versioned docs * stronger test on metadata * update typo
This commit is contained in:
parent
c413cff212
commit
9829f56b1e
45 changed files with 1852 additions and 395 deletions
55
packages/docusaurus-plugin-content-docs/src/env.ts
Normal file
55
packages/docusaurus-plugin-content-docs/src/env.ts
Normal file
|
@ -0,0 +1,55 @@
|
|||
/**
|
||||
* Copyright (c) 2017-present, Facebook, Inc.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
import path from 'path';
|
||||
import fs from 'fs-extra';
|
||||
import {VersioningEnv, Env} from './types';
|
||||
import {
|
||||
VERSIONS_JSON_FILE,
|
||||
VERSIONED_DOCS_DIR,
|
||||
VERSIONED_SIDEBARS_DIR,
|
||||
} from './constants';
|
||||
|
||||
export function getVersionedDocsDir(siteDir: string) {
|
||||
return path.join(siteDir, VERSIONED_DOCS_DIR);
|
||||
}
|
||||
|
||||
export function getVersionedSidebarsDir(siteDir: string) {
|
||||
return path.join(siteDir, VERSIONED_SIDEBARS_DIR);
|
||||
}
|
||||
|
||||
export function getVersionsJSONFile(siteDir: string) {
|
||||
return path.join(siteDir, VERSIONS_JSON_FILE);
|
||||
}
|
||||
|
||||
export default function(siteDir: string): Env {
|
||||
const versioning: VersioningEnv = {
|
||||
enabled: false,
|
||||
versions: [],
|
||||
latestVersion: null,
|
||||
docsDir: '',
|
||||
sidebarsDir: '',
|
||||
};
|
||||
|
||||
const versionsJSONFile = getVersionsJSONFile(siteDir);
|
||||
if (fs.existsSync(versionsJSONFile)) {
|
||||
const parsedVersions = JSON.parse(
|
||||
fs.readFileSync(versionsJSONFile, 'utf8'),
|
||||
);
|
||||
if (parsedVersions && parsedVersions.length > 0) {
|
||||
versioning.latestVersion = parsedVersions[0];
|
||||
versioning.enabled = true;
|
||||
versioning.versions = parsedVersions;
|
||||
versioning.docsDir = getVersionedDocsDir(siteDir);
|
||||
versioning.sidebarsDir = getVersionedSidebarsDir(siteDir);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
versioning,
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue