// @ts-check // Note: type annotations allow type checking and IDEs autocompletion import { themes as prismThemes } from "prism-react-renderer"; const lightCodeTheme = prismThemes.github; const darkCodeTheme = prismThemes.dracula; // order usage directory by type first function sortItemsByCategory(items) { // type with "category" (directory) first const sortedItems = items.sort(function (a, b) { return a.type.localeCompare(b.type); }); return sortedItems; } const renderApiSSR = process.env.API_SSR !== "false"; const apiConfig = [ "redocusaurus", { // Plugin Options for loading OpenAPI files specs: renderApiSSR ? [ { route: "/api/next/", spec: "static/swagger-latest.json", }, { route: "/api/", spec: "static/swagger-23.json", }, { route: "/api/1.24/", spec: "static/swagger-24.json", }, { route: "/api/1.23/", spec: "static/swagger-23.json", }, { route: "/api/1.22/", spec: "static/swagger-22.json", }, { route: "/api/1.21/", spec: "static/swagger-21.json", }, { route: "/api/1.20/", spec: "static/swagger-20.json", }, { route: "/api/1.19/", spec: "static/swagger-19.json", }, ] : [], // Theme Options for modifying how redoc renders them theme: { // Change with your site colors primaryColor: "#1890ff", }, }, ]; const pageConfig = renderApiSSR ? { exclude: ["api/**"], } : {}; const globalVariables = { current: { goVersion: "1.23", minGoVersion: "1.23", minNodeVersion: "18", version: "main-nightly", sourceVersion: "main", sourceBranch: "main", dockerVersion: "nightly", displayVersion: "1.25-dev", }, 1.24: { goVersion: "1.24", minGoVersion: "1.23", minNodeVersion: "18", version: "1.24.0-rc0", sourceVersion: "v1.24.0-rc0", sourceBranch: "release/v1.24", dockerVersion: "1.24.0-rc0", displayVersion: "1.24.0-rc0", }, 1.23: { goVersion: "1.23", minGoVersion: "1.22", minNodeVersion: "18", version: "1.23.8", sourceVersion: "v1.23.0", sourceBranch: "release/v1.23", dockerVersion: "1.23.8", displayVersion: "1.23.8", }, 1.22: { goVersion: "1.22", minGoVersion: "1.22", minNodeVersion: "18", version: "1.22.6", sourceVersion: "v1.22.6", sourceBranch: "release/v1.22", dockerVersion: "1.22.6", displayVersion: "1.22.6", }, 1.21: { goVersion: "1.21", minGoVersion: "1.21", minNodeVersion: "18", version: "1.21.11", sourceVersion: "v1.21.11", sourceBranch: "release/v1.21", dockerVersion: "1.21.11", displayVersion: "1.21.11", }, "1.20": { goVersion: "1.20", minGoVersion: "1.20", minNodeVersion: "16", version: "1.20.6", sourceVersion: "v1.20.6", sourceBranch: "release/v1.20", dockerVersion: "1.20.6", displayVersion: "1.20.6", }, 1.19: { goVersion: "1.20", minGoVersion: "1.19", minNodeVersion: "14", version: "1.19.4", sourceVersion: "v1.19.4", sourceBranch: "release/v1.19", dockerVersion: "1.19.4", displayVersion: "1.19.4", }, }; const versions = { current: { label: globalVariables["current"].displayVersion, // path is kept as next for dev (so users can always find "nightly" docs) banner: "unreleased", }, 1.24: { label: globalVariables["1.24"].displayVersion, }, 1.23: { label: globalVariables["1.23"].displayVersion, }, 1.22: { label: globalVariables["1.22"].displayVersion, }, 1.21: { label: globalVariables["1.21"].displayVersion, }, "1.20": { label: globalVariables["1.20"].displayVersion, }, 1.19: { label: globalVariables["1.19"].displayVersion, }, }; /** @type {import('@docusaurus/types').Config} */ const config = { title: "Gitea Documentation", tagline: "Git with a cup of tea", url: "https://docs.gitea.com", baseUrl: "/", onBrokenLinks: "warn", onBrokenMarkdownLinks: "warn", favicon: "img/favicon.png", future: { experimental_faster: true, }, plugins: [ [ "docusaurus-plugin-plausible", { domain: "docs.gitea.com", }, ], // for runner documentations [ "@docusaurus/plugin-content-docs", { id: "runner", path: "runner", routeBasePath: "runner", //sidebarPath: './runner/sidebars.js', versions: { current: { label: "main", banner: "unreleased", }, "0.2.11": { path: "0.2.11", label: "0.2.11", }, }, lastVersion: "0.2.11", editUrl: ({ versionDocsDirPath, docPath, locale, version, permalink, }) => { return `https://gitea.com/gitea/docs/src/branch/main/${ version === "current" ? "runner" : `runner_versioned_docs/version-${version}` }/${docPath}`; }, async sidebarItemsGenerator({ defaultSidebarItemsGenerator, ...args }) { const { item } = args; // Use the provided data to generate a custom sidebar slice const sidebarItems = await defaultSidebarItemsGenerator(args); if (item.dirName !== "usage") { return sidebarItems; } else { return sortItemsByCategory(sidebarItems); } }, }, ], ], i18n: { defaultLocale: "en-us", locales: ["en-us", "zh-cn", "zh-tw"], localeConfigs: { "en-us": { label: "English", }, "zh-cn": { label: "简体中文", }, "zh-tw": { label: "繁體中文", }, }, }, presets: [ [ "@docusaurus/preset-classic", //'classic', /** @type {import('@docusaurus/preset-classic').Options} */ ({ docs: { sidebarPath: require.resolve("./sidebars.js"), routeBasePath: "/", // Serve the docs at the site's root editUrl: ({ versionDocsDirPath, docPath, locale, version, permalink, }) => { // Special case for awesome page if (docPath.includes("awesome.md")) { return `https://gitea.com/gitea/awesome-gitea/src/branch/main/README.md`; } if (locale === "en-us") { return `https://gitea.com/gitea/docs/src/branch/main/${ version === "current" ? "docs" : `versioned_docs/version-${version}` }/${docPath}`; } return `https://gitea.com/gitea/docs/src/branch/main/i18n/${locale}/docusaurus-plugin-content-docs/${ version === "current" ? "current" : `version-${version}` }/${docPath}`; }, versions: versions, lastVersion: "1.23", async sidebarItemsGenerator({ defaultSidebarItemsGenerator, ...args }) { const { item } = args; // Use the provided data to generate a custom sidebar slice const sidebarItems = await defaultSidebarItemsGenerator(args); if (item.dirName !== "usage") { return sidebarItems; } else { return sortItemsByCategory(sidebarItems); } }, }, blog: false, theme: { customCss: require.resolve("./src/css/custom.css"), }, pages: pageConfig, gtag: { trackingID: "G-KHM0KYT506", }, }), ], apiConfig, ], markdown: { preprocessor: ({ filePath, fileContent }) => { var key = ""; var found = false; for (key in globalVariables) { let folderName = key == "current" ? "current" : `version-${key}`; if (filePath.includes(`/${folderName}/`)) { found = true; break; } } if (key == "" || !found) { key = "current"; } let content = fileContent; for (const variable in globalVariables[key]) { content = content.replaceAll( "@" + variable + "@", globalVariables[key][variable] ); } return content; }, }, themes: [ [ "@easyops-cn/docusaurus-search-local", { hashed: false, language: ["en", "zh"], highlightSearchTermsOnTargetPage: true, explicitSearchResultPath: true, indexBlog: false, docsRouteBasePath: "/", }, ], ], themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ image: '/img/gitea.svg', metadata: [ { name: 'og:logo', content: '/img/gitea.svg' }, { name: "keywords", content: "gitea, git, devops, actions, packages, documentation, self-hosted, open-source, version control, gitlab, github", }, ], colorMode: { defaultMode: "light", disableSwitch: false, respectPrefersColorScheme: true, }, announcementBar: { id: "announcementBar-4", // Increment on change content: `<a href="https://about.gitea.com/products/cloud">Try Gitea Cloud ☁️ for 30 days <span aria-hidden="true">→</span> Accelerate your Development & Deploys!</a>`, }, navbar: { title: "Gitea", logo: { alt: "Gitea Logo", src: "img/gitea.svg", href: "https://about.gitea.com/", target: "_self", }, items: [ { type: "doc", docId: "index", position: "left", label: "Docs", }, { to: "/api/1.23/", label: "API", position: "left", activeBaseRegex: "api/(1.19|1.20|1.21|1.22|1.23|1.24|next)/", }, { to: "/runner/0.2.11/", label: "Runner", position: "left", activeBaseRegex: "runner/(0.2.11|next)/", }, { position: "left", label: "Enterprise", href: "https://docs.gitea.com/enterprise", className: "internal-href", target: "_self", }, { type: "search", position: "right", }, { type: "localeDropdown", position: "right", }, { type: "docsVersionDropdown", position: "right", dropdownActiveClassDisabled: true, }, { type: "custom-Dropdown", label: "API Version", position: "right", items: [ { to: "/api/next/", label: "1.25-dev" }, { to: "/api/1.24/", label: "1.24.0-rc0" }, { to: "/api/1.23/", label: "1.23.8" }, { to: "/api/1.22/", label: "1.22.6" }, { to: "/api/1.21/", label: "1.21.11" }, { to: "/api/1.20/", label: "1.20.6" }, { to: "/api/1.19/", label: "1.19.4" }, ], routerRgx: "/api/", classNames: "api-dropdown", }, { type: "custom-Dropdown", label: "Runner Version", position: "right", items: [ { to: "/runner/next/", label: "development" }, { to: "/runner/0.2.11/", label: "0.2.11" }, ], routerRgx: "/runner/", classNames: "runner-dropdown", }, { to: "help/support", position: "right", label: "Support", activeBaseRegex: "help/support", }, { href: "https://gitea.com/user/login", label: "Sign In", position: "right", className: "internal-href signin-button", target: "_self", }, ], }, footer: { style: "dark", links: [ { title: "Community", items: [ { label: "Awesome Gitea", href: "https://gitea.com/gitea/awesome-gitea", }, { label: "Stack Overflow", href: "https://stackoverflow.com/questions/tagged/gitea", }, { label: "Discord", href: "https://discord.gg/gitea", }, { label: "Matrix", href: "https://matrix.to/#/#gitea-space:matrix.org", }, { label: "Forum", href: "https://forum.gitea.com/", }, { label: "Twitter", href: "https://twitter.com/giteaio", }, { label: "Mastodon", href: "https://social.gitea.io/@gitea", }, ], }, { title: "Code", items: [ { label: "GitHub", href: "https://github.com/go-gitea/gitea", }, { label: "Gitea", href: "https://gitea.com/gitea", }, { label: "Tea CLI", href: "https://gitea.com/gitea/tea", }, ], }, ], }, prism: { theme: lightCodeTheme, darkTheme: darkCodeTheme, additionalLanguages: ["ini", "diff", "json", "http", "docker", "php"], }, }), }; module.exports = config;