Merge pull request #26355 from backstage/rugvip/versioned-docs
microsite: add documentation versioning
This commit is contained in:
@@ -21,9 +21,38 @@
|
||||
import { themes } from 'prism-react-renderer';
|
||||
import type * as Preset from '@docusaurus/preset-classic';
|
||||
import { Config } from '@docusaurus/types';
|
||||
import RedirectPlugin from '@docusaurus/plugin-client-redirects';
|
||||
|
||||
const backstageTheme = themes.vsDark;
|
||||
backstageTheme.plain.backgroundColor = '#232323';
|
||||
|
||||
const useVersionedDocs = require('fs').existsSync('versions.json');
|
||||
|
||||
// This patches the redirect plugin to ignore the error when it tries to override existing fields.
|
||||
// This lets us add redirects that only apply to the next docs, while the stable docs still contain the source path.
|
||||
const PatchedRedirectPlugin: typeof RedirectPlugin = (ctx, opts) => {
|
||||
const plugin = RedirectPlugin(ctx, opts);
|
||||
|
||||
return {
|
||||
...plugin,
|
||||
async postBuild(...args) {
|
||||
try {
|
||||
await plugin.postBuild(...args);
|
||||
} catch (error) {
|
||||
if (
|
||||
error.message ===
|
||||
'The redirect plugin is not supposed to override existing files.'
|
||||
) {
|
||||
// Bit of a hack to make sure all remaining redirects are written, since the write uses Promise.all
|
||||
await new Promise(resolve => setTimeout(resolve, 1000));
|
||||
} else {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
const config: Config = {
|
||||
title: 'Backstage Software Catalog and Developer Platform',
|
||||
tagline: 'An open source framework for building developer portals',
|
||||
@@ -57,6 +86,26 @@ const config: Config = {
|
||||
editUrl: 'https://github.com/backstage/backstage/edit/master/docs/',
|
||||
path: '../docs',
|
||||
sidebarPath: 'sidebars.json',
|
||||
...(useVersionedDocs
|
||||
? {
|
||||
includeCurrentVersion: true,
|
||||
lastVersion: 'stable',
|
||||
versions: {
|
||||
stable: {
|
||||
label: 'Stable',
|
||||
path: '/',
|
||||
banner: 'none',
|
||||
badge: false,
|
||||
},
|
||||
current: {
|
||||
label: 'Next',
|
||||
path: '/next',
|
||||
banner: 'unreleased',
|
||||
badge: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
: undefined),
|
||||
},
|
||||
blog: {
|
||||
path: 'blog',
|
||||
@@ -119,9 +168,11 @@ const config: Config = {
|
||||
};
|
||||
},
|
||||
}),
|
||||
[
|
||||
'@docusaurus/plugin-client-redirects',
|
||||
{
|
||||
ctx =>
|
||||
PatchedRedirectPlugin(ctx, {
|
||||
id: '@docusaurus/plugin-client-redirects',
|
||||
toExtensions: [],
|
||||
fromExtensions: [],
|
||||
redirects: [
|
||||
{
|
||||
from: '/docs',
|
||||
@@ -200,8 +251,7 @@ const config: Config = {
|
||||
to: '/docs/backend-system/core-services/url-reader',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}),
|
||||
[
|
||||
'docusaurus-pushfeedback',
|
||||
{
|
||||
@@ -259,6 +309,14 @@ const config: Config = {
|
||||
label: 'Community',
|
||||
position: 'left',
|
||||
},
|
||||
...(useVersionedDocs
|
||||
? [
|
||||
{
|
||||
type: 'docsVersionDropdown',
|
||||
position: 'right' as const,
|
||||
},
|
||||
]
|
||||
: []),
|
||||
],
|
||||
},
|
||||
image: 'img/sharing-opengraph.png',
|
||||
|
||||
+35
-35
@@ -1,39 +1,4 @@
|
||||
{
|
||||
"releases": {
|
||||
"Release Notes": [
|
||||
"releases/v1.30.0",
|
||||
"releases/v1.29.0",
|
||||
"releases/v1.28.0",
|
||||
"releases/v1.27.0",
|
||||
"releases/v1.26.0",
|
||||
"releases/v1.25.0",
|
||||
"releases/v1.24.0",
|
||||
"releases/v1.23.0",
|
||||
"releases/v1.22.0",
|
||||
"releases/v1.21.0",
|
||||
"releases/v1.20.0",
|
||||
"releases/v1.19.0",
|
||||
"releases/v1.18.0",
|
||||
"releases/v1.17.0",
|
||||
"releases/v1.16.0",
|
||||
"releases/v1.15.0",
|
||||
"releases/v1.14.0",
|
||||
"releases/v1.13.0",
|
||||
"releases/v1.12.0",
|
||||
"releases/v1.11.0",
|
||||
"releases/v1.10.0",
|
||||
"releases/v1.9.0",
|
||||
"releases/v1.8.0",
|
||||
"releases/v1.7.0",
|
||||
"releases/v1.6.0",
|
||||
"releases/v1.5.0",
|
||||
"releases/v1.4.0",
|
||||
"releases/v1.3.0",
|
||||
"releases/v1.2.0",
|
||||
"releases/v1.1.0",
|
||||
"releases/v1.0.0"
|
||||
]
|
||||
},
|
||||
"docs": {
|
||||
"Overview": [
|
||||
"overview/what-is-backstage",
|
||||
@@ -556,5 +521,40 @@
|
||||
"contribute/project-structure"
|
||||
],
|
||||
"References": ["references/glossary"]
|
||||
},
|
||||
"releases": {
|
||||
"Release Notes": [
|
||||
"releases/v1.30.0",
|
||||
"releases/v1.29.0",
|
||||
"releases/v1.28.0",
|
||||
"releases/v1.27.0",
|
||||
"releases/v1.26.0",
|
||||
"releases/v1.25.0",
|
||||
"releases/v1.24.0",
|
||||
"releases/v1.23.0",
|
||||
"releases/v1.22.0",
|
||||
"releases/v1.21.0",
|
||||
"releases/v1.20.0",
|
||||
"releases/v1.19.0",
|
||||
"releases/v1.18.0",
|
||||
"releases/v1.17.0",
|
||||
"releases/v1.16.0",
|
||||
"releases/v1.15.0",
|
||||
"releases/v1.14.0",
|
||||
"releases/v1.13.0",
|
||||
"releases/v1.12.0",
|
||||
"releases/v1.11.0",
|
||||
"releases/v1.10.0",
|
||||
"releases/v1.9.0",
|
||||
"releases/v1.8.0",
|
||||
"releases/v1.7.0",
|
||||
"releases/v1.6.0",
|
||||
"releases/v1.5.0",
|
||||
"releases/v1.4.0",
|
||||
"releases/v1.3.0",
|
||||
"releases/v1.2.0",
|
||||
"releases/v1.1.0",
|
||||
"releases/v1.0.0"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user