2024-10-22 10:33:48 +08:00
|
|
|
import type { Config } from "@docusaurus/types";
|
|
|
|
import type { Options as ChangelogOptions } from "@nullbot/docusaurus-plugin-changelog";
|
|
|
|
import type * as Preset from "@nullbot/docusaurus-preset-nonepress";
|
|
|
|
import { themes } from "prism-react-renderer";
|
|
|
|
|
|
|
|
// By default, we use Docusaurus Faster
|
|
|
|
// DOCUSAURUS_SLOWER=true is useful for benchmarking faster against slower
|
|
|
|
// hyperfine --prepare 'yarn clear:website' --runs 3 'DOCUSAURUS_SLOWER=true yarn build:website:fast' 'yarn build:website:fast'
|
|
|
|
const isSlower = process.env.DOCUSAURUS_SLOWER === "true";
|
|
|
|
if (isSlower) {
|
|
|
|
console.log("🐢 Using slower Docusaurus build");
|
|
|
|
}
|
|
|
|
|
|
|
|
// color mode config
|
|
|
|
const colorMode: Preset.ThemeConfig["colorMode"] = {
|
|
|
|
defaultMode: "light",
|
|
|
|
respectPrefersColorScheme: true,
|
|
|
|
};
|
|
|
|
|
|
|
|
// navbar config
|
|
|
|
const navbar: Preset.ThemeConfig["navbar"] = {
|
|
|
|
title: "NoneBot",
|
|
|
|
logo: {
|
|
|
|
alt: "NoneBot",
|
|
|
|
src: "logo.png",
|
|
|
|
href: "/",
|
|
|
|
target: "_self",
|
|
|
|
height: 32,
|
|
|
|
width: 32,
|
|
|
|
},
|
|
|
|
hideOnScroll: false,
|
|
|
|
items: [
|
|
|
|
{
|
|
|
|
label: "指南",
|
|
|
|
type: "docsMenu",
|
|
|
|
category: "tutorial",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: "深入",
|
|
|
|
type: "docsMenu",
|
|
|
|
category: "appendices",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: "进阶",
|
|
|
|
type: "docsMenu",
|
|
|
|
category: "advanced",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: "API",
|
|
|
|
type: "doc",
|
|
|
|
docId: "api/index",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: "更多",
|
|
|
|
type: "dropdown",
|
|
|
|
to: "/store/plugins",
|
|
|
|
items: [
|
|
|
|
{
|
|
|
|
label: "最佳实践",
|
|
|
|
type: "doc",
|
|
|
|
docId: "best-practice/scheduler",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: "开发者",
|
|
|
|
type: "doc",
|
|
|
|
docId: "developer/plugin-publishing",
|
|
|
|
},
|
|
|
|
{ label: "社区", type: "doc", docId: "community/contact" },
|
|
|
|
{ label: "开源之夏", type: "doc", docId: "ospp/2024" },
|
|
|
|
{ label: "商店", to: "/store/plugins" },
|
2024-11-01 12:17:23 +08:00
|
|
|
{ label: "更新日志", to: "/changelog/" },
|
2024-10-22 10:33:48 +08:00
|
|
|
{ label: "论坛", href: "https://discussions.nonebot.dev" },
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
};
|
|
|
|
|
|
|
|
// footer config
|
|
|
|
const footer: Preset.ThemeConfig["footer"] = {
|
|
|
|
style: "light",
|
|
|
|
logo: {
|
|
|
|
alt: "NoneBot",
|
|
|
|
src: "logo.png",
|
|
|
|
href: "/",
|
|
|
|
target: "_self",
|
|
|
|
height: 32,
|
|
|
|
width: 32,
|
|
|
|
},
|
|
|
|
copyright: `Copyright © ${new Date().getFullYear()} NoneBot. All rights reserved.`,
|
|
|
|
links: [
|
|
|
|
{
|
|
|
|
title: "Learn",
|
|
|
|
items: [
|
|
|
|
{ label: "Introduction", to: "/docs/" },
|
|
|
|
{ label: "QuickStart", to: "/docs/quick-start" },
|
2024-11-01 12:17:23 +08:00
|
|
|
{ label: "Changelog", to: "/changelog/" },
|
2024-10-22 10:33:48 +08:00
|
|
|
],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: "NoneBot Team",
|
|
|
|
items: [
|
|
|
|
{
|
|
|
|
label: "Homepage",
|
|
|
|
href: "https://nonebot.dev",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: "NoneBot V1",
|
|
|
|
href: "https://v1.nonebot.dev",
|
|
|
|
},
|
|
|
|
{ label: "NoneBot CLI", href: "https://cli.nonebot.dev" },
|
|
|
|
],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: "Related",
|
|
|
|
items: [
|
|
|
|
{ label: "OneBot", href: "https://onebot.dev/" },
|
|
|
|
{ label: "go-cqhttp", href: "https://docs.go-cqhttp.org/" },
|
|
|
|
{ label: "Mirai", href: "https://mirai.mamoe.net/" },
|
|
|
|
],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
};
|
|
|
|
|
|
|
|
// prism config
|
|
|
|
const lightCodeTheme = themes.github;
|
|
|
|
const darkCodeTheme = themes.dracula;
|
|
|
|
|
|
|
|
const prism: Preset.ThemeConfig["prism"] = {
|
|
|
|
theme: lightCodeTheme,
|
|
|
|
darkTheme: darkCodeTheme,
|
|
|
|
additionalLanguages: ["docker", "ini"],
|
|
|
|
};
|
|
|
|
|
|
|
|
// algolia config
|
|
|
|
const algolia: Preset.ThemeConfig["algolia"] = {
|
|
|
|
appId: "X0X5UACHZQ",
|
|
|
|
apiKey: "ac03e1ac2bd0812e2ea38c0cc1ea38c5",
|
|
|
|
indexName: "nonebot",
|
|
|
|
contextualSearch: true,
|
|
|
|
};
|
|
|
|
|
|
|
|
// nonepress config
|
|
|
|
const nonepress: Preset.ThemeConfig["nonepress"] = {
|
|
|
|
tailwindConfig: require("./tailwind.config"),
|
|
|
|
navbar: {
|
|
|
|
docsVersionDropdown: {
|
|
|
|
dropdownItemsAfter: [
|
|
|
|
{
|
|
|
|
label: "1.x",
|
|
|
|
href: "https://v1.nonebot.dev/",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
socialLinks: [
|
|
|
|
{
|
|
|
|
icon: ["fab", "github"],
|
|
|
|
href: "https://github.com/nonebot/nonebot2",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
footer: {
|
|
|
|
socialLinks: [
|
|
|
|
{
|
|
|
|
icon: ["fab", "github"],
|
|
|
|
href: "https://github.com/nonebot/nonebot2",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
icon: ["fab", "qq"],
|
|
|
|
href: "https://jq.qq.com/?_wv=1027&k=5OFifDh",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
icon: ["fab", "telegram"],
|
|
|
|
href: "https://t.me/botuniverse",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
icon: ["fab", "discord"],
|
|
|
|
href: "https://discord.gg/VKtE6Gdc4h",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
// theme config
|
|
|
|
const themeConfig: Preset.ThemeConfig = {
|
|
|
|
colorMode,
|
|
|
|
navbar,
|
|
|
|
footer,
|
|
|
|
prism,
|
|
|
|
algolia,
|
|
|
|
nonepress,
|
|
|
|
};
|
|
|
|
|
|
|
|
export default async function createConfigAsync() {
|
|
|
|
return {
|
|
|
|
title: "NoneBot",
|
|
|
|
tagline: "跨平台 Python 异步机器人框架",
|
|
|
|
favicon: "icons/favicon.ico",
|
|
|
|
|
|
|
|
// Set the production url of your site here
|
|
|
|
url: "https://nonebot.dev",
|
|
|
|
// Set the /<baseUrl>/ pathname under which your site is served
|
|
|
|
// For GitHub pages deployment, it is often '/<projectName>/'
|
|
|
|
baseUrl: process.env.BASE_URL || "/",
|
|
|
|
|
|
|
|
// GitHub pages deployment config.
|
|
|
|
// If you aren't using GitHub pages, you don't need these.
|
|
|
|
organizationName: "nonebot", // Usually your GitHub org/user name.
|
|
|
|
projectName: "nonebot2", // Usually your repo name.
|
|
|
|
|
|
|
|
onBrokenLinks: "throw",
|
|
|
|
onBrokenMarkdownLinks: "warn",
|
|
|
|
|
|
|
|
// Even if you don't use internalization, you can use this field to set useful
|
|
|
|
// metadata like html lang. For example, if your site is Chinese, you may want
|
|
|
|
// to replace "en" with "zh-Hans".
|
|
|
|
i18n: {
|
|
|
|
defaultLocale: "zh-Hans",
|
|
|
|
locales: ["zh-Hans"],
|
|
|
|
},
|
|
|
|
|
|
|
|
headTags: [
|
|
|
|
// 百度搜索资源平台
|
|
|
|
// https://ziyuan.baidu.com/
|
|
|
|
{
|
|
|
|
tagName: "meta",
|
|
|
|
attributes: {
|
|
|
|
name: "baidu-site-verification",
|
|
|
|
content: "codeva-0GTZpDnDrW",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
scripts: [
|
|
|
|
// 百度统计
|
|
|
|
// https://tongji.baidu.com/
|
|
|
|
{
|
|
|
|
type: "text/javascript",
|
|
|
|
charset: "UTF-8",
|
|
|
|
src: "https://hm.baidu.com/hm.js?875efa50097818701ee681edd63eaac6",
|
|
|
|
async: true,
|
|
|
|
},
|
|
|
|
// 万维广告
|
|
|
|
// https://wwads.cn/
|
|
|
|
{
|
|
|
|
type: "text/javascript",
|
|
|
|
charset: "UTF-8",
|
|
|
|
src: "https://cdn.wwads.cn/js/makemoney.js",
|
|
|
|
async: true,
|
|
|
|
},
|
|
|
|
// uwu logo
|
|
|
|
{
|
|
|
|
type: "text/javascript",
|
|
|
|
charset: "UTF-8",
|
|
|
|
src: "/uwu.js",
|
|
|
|
},
|
|
|
|
],
|
|
|
|
|
|
|
|
presets: [
|
|
|
|
[
|
|
|
|
"@nullbot/docusaurus-preset-nonepress",
|
|
|
|
/** @type {import('@nullbot/docusaurus-preset-nonepress').Options} */
|
|
|
|
{
|
|
|
|
docs: {
|
|
|
|
sidebarPath: require.resolve("./sidebars.js"),
|
|
|
|
// Please change this to your repo.
|
|
|
|
editUrl: "https://github.com/nonebot/nonebot2/edit/master/website/",
|
|
|
|
showLastUpdateAuthor: true,
|
|
|
|
showLastUpdateTime: true,
|
|
|
|
// exclude: [
|
|
|
|
// "**/_*.{js,jsx,ts,tsx,md,mdx}",
|
|
|
|
// "**/_*/**",
|
|
|
|
// "**/*.test.{js,jsx,ts,tsx}",
|
|
|
|
// "**/__tests__/**",
|
|
|
|
// ],
|
|
|
|
// async sidebarItemsGenerator({
|
|
|
|
// isCategoryIndex: defaultCategoryIndexMatcher,
|
|
|
|
// defaultSidebarItemsGenerator,
|
|
|
|
// ...args
|
|
|
|
// }) {
|
|
|
|
// return defaultSidebarItemsGenerator({
|
|
|
|
// ...args,
|
|
|
|
// isCategoryIndex(doc) {
|
|
|
|
// // disable category index convention for generated API docs
|
|
|
|
// if (
|
|
|
|
// doc.directories.length > 0 &&
|
|
|
|
// doc.directories.at(-1) === "api"
|
|
|
|
// ) {
|
|
|
|
// return false;
|
|
|
|
// }
|
|
|
|
// return defaultCategoryIndexMatcher(doc);
|
|
|
|
// },
|
|
|
|
// });
|
|
|
|
// },
|
|
|
|
},
|
|
|
|
// theme: {
|
|
|
|
// customCss: require.resolve("./src/css/custom.css"),
|
|
|
|
// },
|
|
|
|
sitemap: {
|
|
|
|
changefreq: "daily",
|
|
|
|
priority: 0.5,
|
|
|
|
},
|
|
|
|
gtag: {
|
|
|
|
trackingID: "G-MRS1GMZG0F",
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
],
|
|
|
|
|
2024-11-22 14:16:22 +08:00
|
|
|
future: {
|
|
|
|
experimental_faster: true,
|
2024-10-22 10:33:48 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
plugins: [
|
|
|
|
require("./src/plugins/webpack-plugin.ts"),
|
|
|
|
[
|
|
|
|
"@nullbot/docusaurus-plugin-changelog",
|
|
|
|
{
|
|
|
|
changelogPath: "src/changelog/changelog.md",
|
|
|
|
changelogHeader: `description: Changelog
|
|
|
|
toc_max_heading_level: 2
|
|
|
|
sidebar_custom_props:
|
2024-11-01 13:54:27 +08:00
|
|
|
sidebar_id: changelog
|
|
|
|
sidebar_version: current`,
|
2024-10-22 10:33:48 +08:00
|
|
|
} satisfies ChangelogOptions,
|
|
|
|
],
|
|
|
|
],
|
|
|
|
|
|
|
|
markdown: {
|
|
|
|
mdx1Compat: {
|
|
|
|
headingIds: true,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
themeConfig,
|
|
|
|
} satisfies Config;
|
|
|
|
}
|