import path from 'path'; import { Config } from '@docusaurus/types'; import npm2yarn from '@docusaurus/remark-plugin-npm2yarn'; import apiLabels from './src/transformers/api-labels'; import apiOptionsClass from './src/transformers/api-options-class'; import apiStructurePreviews from './src/transformers/api-structure-previews'; import fiddleEmbedder from './src/transformers/fiddle-embedder'; const config: Config = { title: 'Electron', tagline: 'Build cross-platform desktop apps with JavaScript, HTML, and CSS', url: 'https://electronjs.org', baseUrl: '/', onBrokenLinks: 'warn', favicon: 'assets/img/favicon.ico', organizationName: 'electron', projectName: 'electron', i18n: { defaultLocale: 'en', locales: ['en', 'de', 'es', 'fr', 'ja', 'pt', 'ru', 'zh'], path: 'i18n', localeConfigs: {}, }, themeConfig: { announcementBar: { id: 'announcementBar', content: `Introducing Electron Forge 6, a complete pipeline for building your Electron apps. Read more in the Forge 6 announcement blog!`, backgroundColor: '#A2ECFB', isCloseable: true, }, colorMode: { //Default to light or dark depending on system theme. respectPrefersColorScheme: true, }, prism: { theme: require('prism-react-renderer/themes/github'), darkTheme: require('prism-react-renderer/themes/dracula'), }, tableOfContents: { minHeadingLevel: 2, maxHeadingLevel: 4, }, navbar: { title: 'Electron', style: 'dark', logo: { alt: 'Electron homepage', src: 'assets/img/logo.svg', }, items: [ { label: 'Docs', type: 'doc', docId: 'latest/tutorial/introduction', position: 'left', }, { label: 'API', type: 'doc', docId: 'latest/api/app', position: 'left', }, { to: 'blog', label: 'Blog', position: 'left' }, { type: 'dropdown', label: 'Tools', position: 'left', items: [ { to: 'https://electronforge.io', label: 'Electron Forge' }, { to: 'fiddle', label: 'Electron Fiddle' }, ], }, { type: 'dropdown', label: 'Community', position: 'left', items: [ { to: 'governance', label: 'Governance' }, { to: 'apps', label: 'Showcase' }, { to: 'community', label: 'Resources' }, ], }, { href: 'https://releases.electronjs.org', label: 'Releases', position: 'right', }, { href: 'https://github.com/electron/electron', label: 'GitHub', position: 'right', }, { type: 'localeDropdown', position: 'right', }, ], }, footer: { logo: { alt: 'OpenJS Foundation Logo', src: 'assets/img/openjsf_logo.svg', srcDark: 'assets/img/openjsf_logo-dark.svg', href: 'https://openjsf.org/', }, links: [ { title: 'Docs', items: [ { label: 'Getting Started', to: '/docs/latest/', }, { label: 'API Reference', to: '/docs/latest/api/app', }, ], }, { title: 'Checklists', items: [ { label: 'Performance', to: '/docs/latest/tutorial/performance', }, { label: 'Security', to: '/docs/latest/tutorial/security', }, ], }, { title: 'Tools', items: [ { label: 'Electron Forge', to: 'https://electronforge.io', }, { label: 'Electron Fiddle', to: '/fiddle', }, ], }, { title: 'Community', items: [ { label: 'Governance', to: '/governance' }, { label: 'Resources', to: '/community' }, { label: 'Discord', href: 'https://discordapp.com/invite/APGC3k5yaH', }, { label: 'Twitter', href: 'https://twitter.com/electronjs', }, { html: 'Mastodon', }, { label: 'Stack Overflow', href: 'https://stackoverflow.com/questions/tagged/electron', }, ], }, { title: 'More', items: [ { label: 'GitHub', href: 'https://github.com/electron/electron', }, { label: 'Open Collective', href: 'https://opencollective.com/electron', }, ], }, ], copyright: `Copyright © ${new Date().getFullYear()} OpenJS Foundation and Electron contributors.`, }, algolia: { appId: 'MG3SRMK3K0', apiKey: 'fdc2cf6080e499639d7e6b0278851ed4', indexName: 'electronjs', contextualSearch: true, }, }, plugins: [ 'docusaurus-plugin-sass', path.resolve(__dirname, './src/plugins/apps'), path.resolve(__dirname, './src/plugins/releases'), path.resolve(__dirname, './src/plugins/fiddle'), path.resolve(__dirname, './src/plugins/governance'), ], presets: [ [ '@docusaurus/preset-classic', { docs: { sidebarPath: require.resolve('./sidebars.js'), routeBasePath: '/docs/', editUrl: ({ docPath }) => { const fixedPath = docPath.replace('latest/', ''); return `https://github.com/electron/electron/edit/main/docs/${fixedPath}`; }, remarkPlugins: [ apiLabels, apiOptionsClass, apiStructurePreviews, fiddleEmbedder, [npm2yarn, { sync: true, converters: ['yarn'] }], ], }, blog: { // See `node_modules/@docusaurus/plugin-content-blog/src/pluginOptionSchema.ts` for full undocumented options blogSidebarCount: 50, blogSidebarTitle: 'Latest posts', blogTitle: `Electron's blog`, blogDescription: `Keep up to date with what's going on with the Electron project`, }, theme: { customCss: [require.resolve('./src/css/custom.scss')], }, googleAnalytics: { trackingID: 'UA-160365006-1', }, }, ], ], webpack: { jsLoader: (isServer) => ({ loader: require.resolve('esbuild-loader'), options: { loader: 'tsx', format: isServer ? 'cjs' : undefined, target: isServer ? 'node12' : 'es2017', }, }), }, }; export default config;