/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ const path = require('path'); const versions = require('./versions.json'); // This probably only makes sense for the alpha phase, temporary function getNextAlphaVersionName() { const expectedPrefix = '2.0.0-alpha.'; const lastReleasedVersion = versions[0]; if (!lastReleasedVersion.includes(expectedPrefix)) { throw new Error( 'this code is only meant to be used during the 2.0 alpha phase.', ); } const alphaBuild = parseInt( lastReleasedVersion.replace(expectedPrefix, ''), 10, ); return `${expectedPrefix}${alphaBuild + 1}`; } const allDocHomesPaths = [ '/docs/', '/docs/next/', ...versions.slice(1).map((version) => `/docs/${version}/`), ]; const isDev = process.env.NODE_ENV === 'development'; const isDeployPreview = process.env.NETLIFY && process.env.CONTEXT === 'deploy-preview'; const baseUrl = process.env.BASE_URL || '/'; const isBootstrapPreset = process.env.DOCUSAURUS_PRESET === 'bootstrap'; const isVersioningDisabled = !!process.env.DISABLE_VERSIONING; module.exports = { title: 'Docusaurus', tagline: 'Build optimized websites quickly, focus on your content', organizationName: 'facebook', projectName: 'docusaurus', baseUrl, baseUrlIssueBanner: true, url: 'https://v2.docusaurus.io', i18n: { defaultLocale: 'en', locales: ['en', 'fr'], localeConfigs: { en: { label: 'English', }, fr: { label: 'Français', }, }, }, onBrokenLinks: 'throw', onBrokenMarkdownLinks: 'warn', favicon: 'img/docusaurus.ico', customFields: { description: 'An optimized site generator in React. Docusaurus helps you to move fast and write content. Build documentation websites, blogs, marketing pages, and more.', }, clientModules: [require.resolve('./dogfooding/clientModuleExample.ts')], themes: ['@docusaurus/theme-live-codeblock'], plugins: [ [ '@docusaurus/plugin-content-docs', { id: 'community', path: 'community', editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/', editCurrentVersion: true, routeBasePath: 'community', sidebarPath: require.resolve('./sidebarsCommunity.js'), showLastUpdateAuthor: true, showLastUpdateTime: true, }, ], [ '@docusaurus/plugin-content-blog', { id: 'second-blog', path: 'dogfooding/second-blog', routeBasePath: 'second-blog', editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/dogfooding', postsPerPage: 3, feedOptions: { type: 'all', copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc.`, }, }, ], [ '@docusaurus/plugin-client-redirects', { fromExtensions: ['html'], createRedirects: function (path) { // redirect to /docs from /docs/introduction, // as introduction has been made the home doc if (allDocHomesPaths.includes(path)) { return [`${path}/introduction`]; } }, redirects: [ { from: ['/docs/support', '/docs/next/support'], to: '/community/support', }, { from: ['/docs/team', '/docs/next/team'], to: '/community/team', }, { from: ['/docs/resources', '/docs/next/resources'], to: '/community/resources', }, ], }, ], [ '@docusaurus/plugin-ideal-image', { quality: 70, max: 1030, // max resized image's size. min: 640, // min resized image's size. if original is lower, use that size. steps: 2, // the max number of images generated between min and max (inclusive) }, ], [ '@docusaurus/plugin-pwa', { debug: false, offlineModeActivationStrategies: ['appInstalled', 'queryString'], // swRegister: false, swCustom: path.resolve(__dirname, 'src/sw.js'), pwaHead: [ { tagName: 'link', rel: 'icon', href: 'img/docusaurus.png', }, { tagName: 'link', rel: 'manifest', href: `${baseUrl}manifest.json`, }, { tagName: 'meta', name: 'theme-color', content: 'rgb(37, 194, 160)', }, { tagName: 'meta', name: 'apple-mobile-web-app-capable', content: 'yes', }, { tagName: 'meta', name: 'apple-mobile-web-app-status-bar-style', content: '#000', }, { tagName: 'link', rel: 'apple-touch-icon', href: 'img/docusaurus.png', }, { tagName: 'link', rel: 'mask-icon', href: 'img/docusaurus.svg', color: 'rgb(62, 204, 94)', }, { tagName: 'meta', name: 'msapplication-TileImage', content: 'img/docusaurus.png', }, { tagName: 'meta', name: 'msapplication-TileColor', content: '#000', }, ], }, ], ], presets: [ [ isBootstrapPreset ? '@docusaurus/preset-bootstrap' : '@docusaurus/preset-classic', { debug: true, // force debug plugin usage docs: { // routeBasePath: '/', path: 'docs', sidebarPath: require.resolve('./sidebars.js'), editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/', editCurrentVersion: true, showLastUpdateAuthor: true, showLastUpdateTime: true, remarkPlugins: [ [require('@docusaurus/remark-plugin-npm2yarn'), {sync: true}], ], disableVersioning: isVersioningDisabled, lastVersion: isDev ? 'current' : undefined, onlyIncludeVersions: !isVersioningDisabled && (isDev || isDeployPreview) ? ['current', ...versions.slice(0, 2)] : undefined, versions: { current: { label: `${getNextAlphaVersionName()} 🚧`, }, }, }, blog: { // routeBasePath: '/', path: '../website-1.x/blog', editUrl: 'https://github.com/facebook/docusaurus/edit/master/website-1.x/', postsPerPage: 3, feedOptions: { type: 'all', copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc.`, }, blogSidebarCount: 'ALL', blogSidebarTitle: 'All our posts', }, pages: { remarkPlugins: [require('@docusaurus/remark-plugin-npm2yarn')], }, theme: { customCss: [require.resolve('./src/css/custom.css')], }, }, ], ], themeConfig: { hideableSidebar: true, colorMode: { defaultMode: 'light', disableSwitch: false, respectPrefersColorScheme: true, }, announcementBar: { id: 'supportus', content: '⭐️ If you like Docusaurus, give it a star on GitHub! ⭐️', }, prism: { theme: require('prism-react-renderer/themes/github'), darkTheme: require('prism-react-renderer/themes/dracula'), }, image: 'img/docusaurus-soc.png', // metadatas: [{name: 'twitter:card', content: 'summary'}], gtag: { trackingID: 'UA-141789564-1', }, algolia: { apiKey: '47ecd3b21be71c5822571b9f59e52544', indexName: 'docusaurus-2', contextualSearch: true, }, navbar: { hideOnScroll: true, title: 'Docusaurus', logo: { alt: 'Docusaurus Logo', src: 'img/docusaurus.svg', srcDark: 'img/docusaurus_keytar.svg', }, items: [ { type: 'doc', position: 'left', docId: 'introduction', label: 'Docs', }, { type: 'doc', position: 'left', docId: 'cli', label: 'API', }, {to: 'blog', label: 'Blog', position: 'left'}, {to: 'showcase', label: 'Showcase', position: 'left'}, { to: '/community/support', label: 'Community', position: 'left', activeBaseRegex: `/community/`, }, // right { type: 'docsVersionDropdown', position: 'right', dropdownActiveClassDisabled: true, dropdownItemsAfter: [ { to: '/versions', label: 'All versions', }, ], }, // {type: 'localeDropdown', position: 'right'}, { href: 'https://github.com/facebook/docusaurus', position: 'right', className: 'header-github-link', 'aria-label': 'GitHub repository', }, ], }, footer: { style: 'dark', links: [ { title: 'Learn', items: [ { label: 'Introduction', to: 'docs', }, { label: 'Installation', to: 'docs/installation', }, { label: 'Migration from v1 to v2', to: 'docs/migration', }, ], }, { title: 'Community', items: [ { label: 'Stack Overflow', href: 'https://stackoverflow.com/questions/tagged/docusaurus', }, { label: 'Feedback', to: 'feedback', }, { label: 'Discord', href: 'https://discordapp.com/invite/docusaurus', }, { label: 'Help', to: '/community/support', }, ], }, { title: 'More', items: [ { label: 'Blog', to: 'blog', }, { label: 'GitHub', href: 'https://github.com/facebook/docusaurus', }, { label: 'Twitter', href: 'https://twitter.com/docusaurus', }, { html: ` Deploys by Netlify `, }, ], }, { title: 'Legal', // Please do not remove the privacy and terms, it's a legal requirement. items: [ { label: 'Privacy', href: 'https://opensource.facebook.com/legal/privacy/', }, { label: 'Terms', href: 'https://opensource.facebook.com/legal/terms/', }, ], }, ], logo: { alt: 'Facebook Open Source Logo', src: 'img/oss_logo.png', href: 'https://opensource.facebook.com', }, copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc. Built with Docusaurus.`, }, }, };