Skip to main content

prefer-config-satisfies

Prefer satisfies Config over direct Config annotations in TypeScript Docusaurus config files.

Targeted pattern scopeโ€‹

This rule focuses on TypeScript Docusaurus config files such as:

  • docusaurus.config.ts
  • docusaurus.config.mts
  • docusaurus.config.cts

It targets common patterns such as:

  • const config: Config = { ... }
  • export default { ... } as Config

What this rule reportsโ€‹

This rule reports direct Config annotations and as Config assertions in TypeScript Docusaurus config files when satisfies Config is the clearer alternative.

Why this rule existsโ€‹

The Docusaurus docs recommend satisfies Config for TypeScript config files.

Using satisfies instead of a direct annotation is useful because it:

  • keeps Docusaurus config shape validation
  • preserves narrower literal types inside the config object
  • avoids unnecessary widening of values that may be useful later in local code
  • matches the modern TypeScript style used in Docusaurus examples

โŒ Incorrectโ€‹

import type { Config } from "@docusaurus/types";

const config: Config = {
title: "My Docs",
url: "https://example.com",
baseUrl: "/docs/",
};

export default config;

โœ… Correctโ€‹

import type { Config } from "@docusaurus/types";

const config = {
title: "My Docs",
url: "https://example.com",
baseUrl: "/docs/",
} satisfies Config;

export default config;

Behavior and migration notesโ€‹

This rule provides an autofix for the common direct-annotation and as Config patterns it recognizes.

The autofix rewrites those cases to satisfies Config while preserving the existing object expression text.

Additional examplesโ€‹

โŒ Incorrect โ€” export-default assertionโ€‹

import type { Config } from "@docusaurus/types";

export default {
title: "My Docs",
url: "https://example.com",
baseUrl: "/docs/",
} as Config;

โœ… Correct โ€” export-default satisfiesโ€‹

import type { Config } from "@docusaurus/types";

export default {
title: "My Docs",
url: "https://example.com",
baseUrl: "/docs/",
} satisfies Config;

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 standardizes on direct annotations or assertions in config files and you do not want satisfies rewrites.

Rule catalog ID: R005

Further readingโ€‹