Skip to main content

no-empty-theme-classic-custom-css

Disallow empty customCss entries in Docusaurus classic theme config.

Targeted pattern scopeโ€‹

This rule focuses on docusaurus.config.* files.

It checks Docusaurus classic theme customCss configuration through:

  • classic preset theme.customCss
  • direct @docusaurus/theme-classic options

What this rule reportsโ€‹

This rule reports empty customCss strings and empty string entries inside customCss arrays.

Why this rule existsโ€‹

customCss entries are file paths. Empty strings do not point to meaningful stylesheets and only make the config harder to read and review.

Removing empty entries keeps the classic theme config honest and easier to maintain.

โŒ Incorrectโ€‹

export default {
presets: [[
"@docusaurus/preset-classic",
{
theme: { customCss: "" },
},
]],
};

โœ… Correctโ€‹

export default {
presets: [[
"@docusaurus/preset-classic",
{
theme: { customCss: "./src/css/custom.css" },
},
]],
};

Behavior and migration notesโ€‹

This rule autofixes the simple literal cases it can safely prove:

  • remove empty entries from customCss arrays
  • remove a customCss property when its value is an empty string

Additional examplesโ€‹

โŒ Incorrect โ€” empty array entryโ€‹

export default {
presets: [[
"@docusaurus/preset-classic",
{
theme: {
customCss: ["./src/css/custom.css", "", "./src/css/extra.css"],
},
},
]],
};

โœ… Correct โ€” only real stylesheet entries remainโ€‹

export default {
presets: [[
"@docusaurus/preset-classic",
{
theme: {
customCss: ["./src/css/custom.css", "./src/css/extra.css"],
},
},
]],
};

ESLint flat config exampleโ€‹

import docusaurus2 from "eslint-plugin-docusaurus-2";

export default [docusaurus2.configs.recommended];

When not to use itโ€‹

Do not use this rule if your project intentionally keeps empty placeholder stylesheet entries during a staged migration and you do not want linting to remove them yet.

Rule catalog ID: R096

Further readingโ€‹