Configuration
Check the docusaurus.config.js
API reference
for a complete list of all available options.
CodeHarborHub is powered by Docusaurus. Its configuration is centralized in a single file: docusaurus.config.js
. This file defines your siteβs metadata, theme options, plugins, and deployment settings.
Keeping a well-maintained config helps contributors focus on docs and code while still allowing full customization.
Syntax to declare docusaurus.config.js
β
The configuration file runs in Node.js and can export either:
- a config object, or
- a function that returns a config object (sync or async).
The docusaurus.config.js
file supports:
Constraints:
- Required: use
export default /* your config*/
(ormodule.exports
) to export your Docusaurus config - Optional: use
import Lib from 'lib'
(orrequire('lib')
) to import Node.js packages
Examples:
export default {
title: 'CodeHarborHub',
url: 'https://codeharborhub.github.io',
baseUrl: '/',
};
module.exports = {
title: 'CodeHarborHub',
url: 'https://codeharborhub.github.io',
baseUrl: '/',
};
import type {Config} from '@docusaurus/types';
export default {
title: 'CodeHarborHub',
url: 'https://codeharborhub.github.io',
baseUrl: '/',
} satisfies Config;
Async configs allow you to dynamically import ESM-only modules:
export default async function createConfig() {
const somePlugin = await import('remark-plugin');
return {
title: 'CodeHarborHub',
url: 'https://codeharborhub.github.io',
baseUrl: '/',
plugins: [somePlugin.default],
};
}
Key Configuration Sectionsβ
Site metadataβ
Define global site information:
export default {
title: 'CodeHarborHub',
tagline: 'Learn. Build. Grow.',
url: 'https://codeharborhub.github.io',
baseUrl: '/',
favicon: 'img/favicon.ico',
};
- title β Shown in the browser tab and search engines.
- tagline β Used in meta tags and the homepage hero.
- url & baseUrl β Base domain and subpath for deployment.
- favicon β Path to your siteβs icon.
Deployment configurationsβ
If you plan to deploy to GitHub Pages:
export default {
organizationName: 'CodeHarborHub', // GitHub org/user
projectName: 'codeharborhub.github.io', // Repository name
deploymentBranch: 'gh-pages',
};
See Deployment for full instructions.
Theme, plugins, and presetsβ
List all themes, plugins, and presets to extend functionality:
export default {
plugins: [
'@docusaurus/plugin-content-blog',
'@docusaurus/plugin-content-pages',
],
themes: ['@docusaurus/theme-classic'],
presets: [
[
'@docusaurus/preset-classic',
{
docs: {sidebarPath: './sidebars.js'},
blog: {showReadingTime: true},
theme: {customCss: './src/css/custom.css'},
},
],
],
};
π‘ Use shorthands for convenience:
plugins: ['content-blog', 'content-pages'],
themes: ['classic'],
You can also load local plugins:
import path from 'path';
export default {
plugins: [path.resolve(__dirname, './plugins/customPlugin')],
};
Custom fieldsβ
Add project-specific data under customFields
:
export default {
customFields: {
repoUrl: 'https://github.com/CodeHarborHub/codeharborhub.github.io',
discordLink: 'https://discord.gg/',
},
};
These values can be accessed inside React components via siteConfig
.
Accessing Configuration in Componentsβ
Use the useDocusaurusContext
hook to read config values:
import React from 'react';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
export default function FooterInfo() {
const {siteConfig} = useDocusaurusContext();
return <p>Β© {new Date().getFullYear()} {siteConfig.title}</p>;
}
Customizing Babelβ
Docusaurus transpiles source code with Babel.
To customize Babel, create a babel.config.js
in your project root:
npm install --save @docusaurus/babel
export default {
presets: ['@docusaurus/babel/preset'],
};
Restart the dev server for changes to take effect.
Tips for CodeHarborHubβ
- Keep SEO fields (title, description, keywords) updated for better visibility.
- Use environment variables (
process.env
) for secrets like analytics keys. - Store commonly reused links (GitHub, Discord) in
customFields
to update them in one place.
π― With a well-structured docusaurus.config.js
,
you can manage site-wide settings, themes, and plugins easily,
making CodeHarborHub scalable and contributor-friendly.