website: Omit Drafts From Version Picker (#19505)

This commit is contained in:
Teffen Ellis
2026-01-16 15:42:13 +01:00
committed by GitHub
parent 61542521d4
commit a32d7f7fd8
2 changed files with 48 additions and 23 deletions

View File

@@ -12,6 +12,46 @@ import { parseFileContentFrontMatter } from "@docusaurus/utils/lib/markdownUtils
import FastGlob from "fast-glob";
import { coerce } from "semver";
/**
* Number of supported releases to show in the sidebar.
*/
export const SUPPORTED_RELEASE_COUNT = 3;
/**
* @typedef {FastGlob.Entry & AKReleaseFile} AKReleaseFileEntry
*/
/**
* Reads and parses the front matter of recent release files.
*
* @param {string} releasesParentDirectory
* @param {AKReleaseFileEntry} release
* @param {number} index
*/
function parseRelease(releasesParentDirectory, release, index) {
if (index > SUPPORTED_RELEASE_COUNT - 1) {
return release;
}
const extension = extname(release.dirent.name);
const fileContent = readFileSync(
join(releasesParentDirectory, `${release.path}${extension}`),
"utf-8",
);
const { frontMatter } = parseFileContentFrontMatter(fileContent);
if (frontMatter.beta) {
release.name += " (Release Candidate)";
}
return {
...release,
frontMatter,
};
}
/**
* Collect all Markdown files from the releases directory.
*
@@ -20,7 +60,7 @@ import { coerce } from "semver";
*/
export function collectReleaseFiles(releasesParentDirectory) {
/**
* @type {Array<FastGlob.Entry & AKReleaseFile>}
* @type {AKReleaseFileEntry[]}
*/
const releaseFiles = FastGlob.sync("releases/**/v*.{md,mdx}", {
cwd: releasesParentDirectory,
@@ -45,30 +85,13 @@ export function collectReleaseFiles(releasesParentDirectory) {
return b.name.localeCompare(a.name);
});
const [latestRelease] = releaseFiles;
const parsedReleaseFiles = releaseFiles.map((release, index) =>
parseRelease(releasesParentDirectory, release, index),
);
if (latestRelease) {
const extension = extname(latestRelease.dirent.name);
const fileContent = readFileSync(
join(releasesParentDirectory, `${latestRelease.path}${extension}`),
"utf-8",
);
const { frontMatter } = parseFileContentFrontMatter(fileContent);
latestRelease.frontMatter = frontMatter;
if (latestRelease.frontMatter.beta) {
latestRelease.name += " (Release Candidate)";
}
}
return releaseFiles;
return parsedReleaseFiles;
}
export const SUPPORTED_RELEASE_COUNT = 3;
/**
*
* @param {AKReleaseFile[]} releaseFiles

View File

@@ -32,7 +32,9 @@ async function akReleasesPlugin(loadContext, options) {
};
const releases = collectReleaseFiles(options.docsDirectory);
const releaseNames = releases.map((release) => release.name);
const releaseNames = releases
.filter((release) => !release.frontMatter?.draft)
.map((release) => release.name);
const outputPath = path.join(loadContext.siteDir, "static", RELEASES_FILENAME);