Essential constants, default values, and configuration utilities used throughout the Docusaurus ecosystem. These constants provide standardized values for directory names, file names, ports, and other configuration parameters.
NODE_MAJOR_VERSIONNode.js major version extracted from process.versions.node.
/**
* Node.js major version extracted from process.versions.node
*/
const NODE_MAJOR_VERSION: number;NODE_MINOR_VERSIONNode.js minor version extracted from process.versions.node.
/**
* Node.js minor version extracted from process.versions.node
*/
const NODE_MINOR_VERSION: number;DOCUSAURUS_VERSIONDocusaurus core version from package.json.
/**
* Docusaurus core version from package.json
*/
const DOCUSAURUS_VERSION: string;Usage Examples:
import {
NODE_MAJOR_VERSION,
NODE_MINOR_VERSION,
DOCUSAURUS_VERSION
} from "@docusaurus/utils";
console.log(`Node.js version: ${NODE_MAJOR_VERSION}.${NODE_MINOR_VERSION}`);
console.log(`Docusaurus version: ${DOCUSAURUS_VERSION}`);
// Check Node.js version compatibility
if (NODE_MAJOR_VERSION < 18) {
throw new Error("Node.js 18 or higher is required");
}
// Add version info to generated metadata
const siteMetadata = {
generator: `Docusaurus ${DOCUSAURUS_VERSION}`,
nodeVersion: `${NODE_MAJOR_VERSION}.${NODE_MINOR_VERSION}`,
};DEFAULT_BUILD_DIR_NAMEDefault build output directory name.
/**
* Default build output directory name ("build")
*/
const DEFAULT_BUILD_DIR_NAME: string;SRC_DIR_NAMESource directory name.
/**
* Source directory name ("src")
*/
const SRC_DIR_NAME: string;DEFAULT_STATIC_DIR_NAMEDefault static files directory.
/**
* Default static files directory ("static")
*/
const DEFAULT_STATIC_DIR_NAME: string;OUTPUT_STATIC_ASSETS_DIR_NAMEBuild output assets directory.
/**
* Build output assets directory ("assets")
*/
const OUTPUT_STATIC_ASSETS_DIR_NAME: string;GENERATED_FILES_DIR_NAMEGenerated files directory (.docusaurus or environment override).
/**
* Generated files directory (".docusaurus" or env override)
*/
const GENERATED_FILES_DIR_NAME: string;THEME_PATHTheme components path.
/**
* Theme components path ("src/theme")
*/
const THEME_PATH: string;Usage Examples:
import {
DEFAULT_BUILD_DIR_NAME,
SRC_DIR_NAME,
DEFAULT_STATIC_DIR_NAME,
OUTPUT_STATIC_ASSETS_DIR_NAME,
GENERATED_FILES_DIR_NAME,
THEME_PATH
} from "@docusaurus/utils";
// Construct common paths
const siteDir = "/website";
const buildDir = path.join(siteDir, DEFAULT_BUILD_DIR_NAME);
const srcDir = path.join(siteDir, SRC_DIR_NAME);
const staticDir = path.join(siteDir, DEFAULT_STATIC_DIR_NAME);
const generatedDir = path.join(siteDir, GENERATED_FILES_DIR_NAME);
console.log("Build output:", buildDir); // "/website/build"
console.log("Source files:", srcDir); // "/website/src"
console.log("Static files:", staticDir); // "/website/static"
console.log("Generated files:", generatedDir); // "/website/.docusaurus"
// Theme customization path
const themePath = path.join(siteDir, THEME_PATH);
console.log("Theme components:", themePath); // "/website/src/theme"
// Build asset output path
const assetsOutputDir = path.join(buildDir, OUTPUT_STATIC_ASSETS_DIR_NAME);
console.log("Assets output:", assetsOutputDir); // "/website/build/assets"DEFAULT_CONFIG_FILE_NAMEDefault config file name without extension.
/**
* Default config file name without extension ("docusaurus.config")
*/
const DEFAULT_CONFIG_FILE_NAME: string;BABEL_CONFIG_FILE_NAMEBabel configuration file name.
/**
* Babel configuration file name ("babel.config.js" or env override)
*/
const BABEL_CONFIG_FILE_NAME: string;Usage Examples:
import {
DEFAULT_CONFIG_FILE_NAME,
BABEL_CONFIG_FILE_NAME
} from "@docusaurus/utils";
// Look for config files with different extensions
const possibleConfigFiles = [
`${DEFAULT_CONFIG_FILE_NAME}.js`,
`${DEFAULT_CONFIG_FILE_NAME}.ts`,
`${DEFAULT_CONFIG_FILE_NAME}.mjs`,
];
console.log("Searching for config files:", possibleConfigFiles);
// ["docusaurus.config.js", "docusaurus.config.ts", "docusaurus.config.mjs"]
// Babel config path
const babelConfigPath = path.join(siteDir, BABEL_CONFIG_FILE_NAME);
console.log("Babel config:", babelConfigPath); // "/website/babel.config.js"DEFAULT_I18N_DIR_NAMEi18n directory name.
/**
* i18n directory name ("i18n")
*/
const DEFAULT_I18N_DIR_NAME: string;CODE_TRANSLATIONS_FILE_NAMECode translations file name.
/**
* Code translations file name ("code.json")
*/
const CODE_TRANSLATIONS_FILE_NAME: string;Usage Examples:
import {
DEFAULT_I18N_DIR_NAME,
CODE_TRANSLATIONS_FILE_NAME
} from "@docusaurus/utils";
// Construct i18n paths
const siteDir = "/website";
const i18nDir = path.join(siteDir, DEFAULT_I18N_DIR_NAME);
console.log("i18n directory:", i18nDir); // "/website/i18n"
// Code translations file path
const codeTranslationsPath = path.join(i18nDir, "en", CODE_TRANSLATIONS_FILE_NAME);
console.log("Code translations:", codeTranslationsPath); // "/website/i18n/en/code.json"
// Locale-specific paths
const locales = ["en", "fr", "es"];
const translationPaths = locales.map(locale =>
path.join(i18nDir, locale, CODE_TRANSLATIONS_FILE_NAME)
);
console.log("All translation files:", translationPaths);DEFAULT_PORTDefault development server port.
/**
* Default development server port (3000 or PORT env var)
*/
const DEFAULT_PORT: number;DEFAULT_PLUGIN_IDDefault plugin instance ID.
/**
* Default plugin instance ID ("default")
*/
const DEFAULT_PLUGIN_ID: string;WEBPACK_URL_LOADER_LIMITURL loader size limit for webpack.
/**
* URL loader size limit (10000 or env override)
*/
const WEBPACK_URL_LOADER_LIMIT: string | number;Usage Examples:
import {
DEFAULT_PORT,
DEFAULT_PLUGIN_ID,
WEBPACK_URL_LOADER_LIMIT
} from "@docusaurus/utils";
// Development server configuration
const devServerConfig = {
port: process.env.PORT || DEFAULT_PORT,
host: "localhost",
};
console.log(`Dev server will run on port: ${devServerConfig.port}`);
// Plugin configuration
const pluginConfig = {
id: DEFAULT_PLUGIN_ID,
path: "./docs",
};
console.log("Default plugin ID:", pluginConfig.id); // "default"
// Webpack loader configuration
const urlLoaderConfig = {
test: /\.(png|jpg|jpeg|gif)$/,
use: {
loader: "url-loader",
options: {
limit: WEBPACK_URL_LOADER_LIMIT,
fallback: "file-loader",
},
},
};
console.log("URL loader limit:", WEBPACK_URL_LOADER_LIMIT); // 10000 (or env override)import {
DEFAULT_BUILD_DIR_NAME,
DEFAULT_CONFIG_FILE_NAME,
SRC_DIR_NAME,
DEFAULT_STATIC_DIR_NAME,
DEFAULT_I18N_DIR_NAME,
THEME_PATH,
DEFAULT_PORT,
DEFAULT_PLUGIN_ID,
DOCUSAURUS_VERSION,
NODE_MAJOR_VERSION,
} from "@docusaurus/utils";
// Complete site configuration using constants
function createSiteConfig(siteDir: string) {
return {
// Version info
version: DOCUSAURUS_VERSION,
nodeVersion: NODE_MAJOR_VERSION,
// Directory structure
dirs: {
site: siteDir,
build: path.join(siteDir, DEFAULT_BUILD_DIR_NAME),
src: path.join(siteDir, SRC_DIR_NAME),
static: path.join(siteDir, DEFAULT_STATIC_DIR_NAME),
i18n: path.join(siteDir, DEFAULT_I18N_DIR_NAME),
theme: path.join(siteDir, THEME_PATH),
},
// Development server
devServer: {
port: DEFAULT_PORT,
},
// Plugin configuration
plugins: [
[
"@docusaurus/plugin-content-docs",
{
id: DEFAULT_PLUGIN_ID,
path: "./docs",
},
],
],
// Config file patterns
configFiles: [
`${DEFAULT_CONFIG_FILE_NAME}.js`,
`${DEFAULT_CONFIG_FILE_NAME}.ts`,
`${DEFAULT_CONFIG_FILE_NAME}.mjs`,
],
};
}