blob: 227ea683be9ee2837d0803eac67e2a3a44cdbff5 [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
// @ts-check
// Note: type annotations allow type checking and IDEs autocompletion
const { themes } = require("prism-react-renderer");
const {
addRustdocLlmSessions,
applyGeneratedConfig,
createLegacyDocsRedirect,
getWebsiteSettings,
orderByPathDepth,
} = require("./config/site-helpers");
const repoAddress = "https://github.com/apache/opendal";
const { baseUrl, websiteNotLatest, websiteStaging, websiteVersion } =
getWebsiteSettings();
/** @type {import('@docusaurus/types').Config} */
const config = {
title: "Apache OpenDAL™",
tagline:
"Open Data Access Layer: Access data freely, painlessly, and efficiently",
favicon: "img/favicon.ico",
customFields: {
isStaging: websiteStaging,
version: websiteVersion,
},
url: "https://opendal.apache.org/",
baseUrl: "/",
// Always set trailingSlash to true to avoid redirecting to a URL with a trailing slash
trailingSlash: true,
onBrokenLinks: "throw",
markdown: {
format: "detect",
hooks: {
onBrokenMarkdownLinks: "throw",
}
},
i18n: {
defaultLocale: "en",
locales: ["en"],
},
future: {
faster: {
rspackBundler: true,
rspackPersistentCache: true,
},
},
presets: [
[
"@docusaurus/preset-classic",
/** @type {import('@docusaurus/preset-classic').Options} */
({
docs: {
routeBasePath: "docs",
sidebarPath: require.resolve("./docs/sidebars.js"),
editUrl: "https://github.com/apache/opendal/tree/main/website/",
showLastUpdateAuthor: true,
showLastUpdateTime: true,
remarkPlugins: [require("./plugins/remark-include-code")],
},
blog: {
showReadingTime: true,
editUrl: "https://github.com/apache/opendal/tree/main/website/",
onUntruncatedBlogPosts: "warn",
},
theme: {
customCss: [
require.resolve("./src/css/variables.css"),
require.resolve("./src/css/global.css"),
require.resolve("./src/css/navbar.css"),
require.resolve("./src/css/search.css"),
require.resolve("./src/css/sidebar.css"),
require.resolve("./src/css/footer.css"),
],
},
sitemap: {
changefreq: "daily",
priority: 0.5,
ignorePatterns: ["/tags/**"],
filename: "sitemap.xml",
},
}),
],
],
plugins: [
[
"@docusaurus/plugin-content-docs",
{
id: "community",
path: "community",
routeBasePath: "community",
sidebarPath: require.resolve("./community/sidebars.js"),
editUrl: "https://github.com/apache/opendal/tree/main/website/",
},
],
[require.resolve("docusaurus-plugin-image-zoom"), {}],
[
"@docusaurus/plugin-client-redirects",
{
redirects: [
{
from: "/discord",
to: "https://discord.com/invite/XQy8yGR2dg",
},
{
from: "/maillist",
to: "https://lists.apache.org/list.html?dev@opendal.apache.org",
},
],
createRedirects: createLegacyDocsRedirect,
},
],
require.resolve("docusaurus-lunr-search"),
// Generates the /services section from data/services.json.
require.resolve("./plugins/services-docs-plugin"),
// This plugin will download all images to local and rewrite the url in html.
require.resolve("./plugins/image-ssr-plugin"),
[
"docusaurus-plugin-llms-builder",
/** @type {import("docusaurus-plugin-llms-builder").PluginOptions} */
({
version: websiteVersion,
llmConfigs: [
{
title: "Apache OpenDAL™: One Layer, All Storage.",
description:
'OpenDAL (/ˈoʊ.pən.dæl/, pronounced "OH-puhn-dal") is an Open Data Access Layer that enables seamless interaction with diverse storage services.',
summary:
"OpenDAL's development is guided by its vision of One Layer, All Storage and its core principles: Open Community, Solid Foundation, Fast Access, Object Storage First, and Extensible Architecture. Read the explained vision at OpenDAL Vision.",
generateLLMsTxt: true,
generateLLMsFullTxt: true,
hooks: {
"generate:prepare": (ctx) => {
addRustdocLlmSessions(ctx);
},
},
sessions: [
{
type: "docs",
docsDir: "docs",
sessionName: "Docs",
sitemap: "sitemap.xml",
patterns: {
ignorePatterns: ["**/blog/**", "**/blog", "**/community/**"],
orderPatterns: orderByPathDepth,
},
},
{
type: "blog",
docsDir: "blog",
sessionName: "Blog",
rss: "rss.xml",
},
{
type: "docs",
docsDir: "community",
sessionName: "Community",
},
],
},
],
}),
],
],
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
// TODO social card image
// image: 'img/opendal-social-card.jpg',
colorMode: {
defaultMode: "light",
disableSwitch: false,
respectPrefersColorScheme: true,
},
navbar: {
logo: {
alt: "Apache OpenDAL",
src: "img/logo.svg",
srcDark: "img/logo_dark.svg",
href: "/",
target: "_self",
height: 32,
},
items: [
{
type: "doc",
docId: "overview",
position: "right",
label: "Docs",
},
{
to: "/services",
label: "Services",
position: "right",
},
{
to: "/blog",
label: "Blog",
position: "right",
},
{
type: "doc",
docId: "community",
position: "right",
label: "Community",
docsPluginId: "community",
},
{
to: "/download",
label: "Download",
position: "right",
},
{
type: "dropdown",
label: "ASF",
position: "right",
items: [
{
label: "Foundation",
to: "https://www.apache.org/",
},
{
label: "License",
to: "https://www.apache.org/licenses/",
},
{
label: "Events",
to: "https://www.apache.org/events/current-event.html",
},
{
label: "Privacy",
to: "https://privacy.apache.org/policies/privacy-policy-public.html",
},
{
label: "Security",
to: "https://www.apache.org/security/",
},
{
label: "Sponsorship",
to: "https://www.apache.org/foundation/sponsorship.html",
},
{
label: "Thanks",
to: "https://www.apache.org/foundation/thanks.html",
},
{
label: "Code of Conduct",
to: "https://www.apache.org/foundation/policies/conduct.html",
},
],
},
{
href: repoAddress,
position: "right",
className: "header-github-link",
"aria-label": "GitHub repository",
},
{
href: "https://discord.gg/XQy8yGR2dg",
position: "right",
className: "header-discord-link",
"aria-label": "Discord",
},
],
},
footer: {
style: "light",
logo: {
alt: "Apache Software Foundation",
src: "./img/asf_logo_wide.svg",
href: "https://www.apache.org/",
width: 300,
},
copyright: `Copyright © 2022-${new Date().getFullYear()}, The Apache Software Foundation<br/>Apache OpenDAL, OpenDAL, Apache, the Apache feather and the Apache OpenDAL project logo are either registered trademarks or trademarks of the Apache Software Foundation.`,
},
prism: {
theme: themes.github,
darkTheme: themes.dracula,
additionalLanguages: ["rust", "java", "groovy", "python", "ruby", "cpp"],
},
zoom: {
selector: "img:not(a img)",
background: "rgba(255, 255, 255, 0.8)",
config: {},
},
}),
};
module.exports = applyGeneratedConfig(config, { baseUrl, websiteNotLatest });