/* * Copyright (c) Facebook, Inc. and its affiliates. * Copyright (c) 2023-2024 Kristóf Marussy * * SPDX-License-Identifier: MIT */ import type { Options as BlogOptions } from '@docusaurus/plugin-content-blog'; import type { Options as PagesOptions } from '@docusaurus/plugin-content-pages'; import type { Options as ClassicThemeOptions } from '@docusaurus/theme-classic'; import type { UserThemeConfig } from '@docusaurus/theme-common'; import type { Config } from '@docusaurus/types'; import { Config as SwcConfig } from '@swc/core'; import { themes } from 'prism-react-renderer'; import rehypeKatex from 'rehype-katex'; import remarkMath from 'remark-math'; import smartypants from 'remark-smartypants'; const markdownOptions = { remarkPlugins: [remarkMath, [smartypants, { dashes: 'oldschool' }]], rehypePlugins: [[rehypeKatex, { trust: true }]], }; export default { title: 'Kristóf Marussy', url: 'https://marussy.com', baseUrl: '/', baseUrlIssueBanner: false, trailingSlash: true, staticDirectories: ['third-party/static', 'static'], plugins: [ [ '@docusaurus/plugin-content-blog', { routeBasePath: '/', archiveBasePath: 'blog', editUrl: 'https://git.marussy.com/blog/tree', ...markdownOptions, feedOptions: { type: 'all', title: 'Kristóf Marussy', description: "Kristóf Marussy's Blog", }, } satisfies BlogOptions, ], [ '@docusaurus/plugin-content-pages', markdownOptions satisfies PagesOptions, ], '@docusaurus/plugin-sitemap', './src/plugins/compressionPlugin.ts', './src/plugins/responsiveLoaderPlugin.ts', './src/plugins/swcMinifyPlugin.ts', './src/plugins/thirdPartyContentPlugin.ts', ], themes: [ [ '@docusaurus/theme-classic', { customCss: [require.resolve('./src/css/custom.css')], } satisfies ClassicThemeOptions, ], ], onBrokenLinks: 'warn', themeConfig: { colorMode: { respectPrefersColorScheme: true, }, prism: { additionalLanguages: ['bash', 'java', 'shell-session'], theme: themes.oneLight, darkTheme: themes.oneDark, }, navbar: { title: 'Kristóf Marussy', hideOnScroll: true, items: [ { type: 'dropdown', label: 'About', to: '/', items: [ { label: 'Research', to: '/#research', }, { label: 'Publications', to: '/#publications', }, { label: 'Resume', to: '/#resume', }, { label: 'Contact', to: '/#contact', }, ], }, { label: 'Blog', to: '/blog', }, ], }, footer: { links: [ { title: 'Pages', items: [ { label: 'About', to: '/', }, { label: 'Blog', to: '/blog', }, { label: 'Tags', to: '/tags', }, ], }, ], copyright: 'Built with ❤︎ and Docusaurus.', }, } satisfies UserThemeConfig, webpack: { // Speed up builds by using a native Javascript loader. // See: https://github.com/facebook/docusaurus/issues/4765#issuecomment-841135926 // But we follow the Docusaurus upstear from // https://github.com/facebook/docusaurus/blob/791da2e4a1a53aa6309887059e3f112fcb35bec4/website/docusaurus.config.ts#L152-L171 // and use swc instead of esbuild. jsLoader: (isServer) => ({ loader: require.resolve('swc-loader'), options: { jsc: { parser: { syntax: 'typescript', tsx: true, }, transform: { react: { runtime: 'automatic', }, }, target: 'es2017', }, module: { type: isServer ? 'commonjs' : 'es6', }, } satisfies SwcConfig, }), }, } satisfies Config;