Skip to content

markdown-preferences/canonical-code-block-language

enforce canonical language names in code blocks

  • 🔧 The --fix option on the command line can automatically fix some of the problems reported by this rule.

📖 Rule Details

This rule enforces the use of canonical (standardized) language names in Markdown code blocks. It helps maintain consistency across your documentation by automatically converting language names to their preferred canonical forms. By default, it converts verbose language names to their shorter, more commonly used abbreviations.

md
<!-- eslint markdown-preferences/canonical-code-block-language: ['error', { languages: { javascript: 'js', typescript: 'ts', python: 'py' } }] -->

<!-- ✓ GOOD -->

```js
console.log("Hello, world!");
```

```ts
const message: string = "Hello, TypeScript!";
```

```py
print("Hello, Python!")
```

<!-- ✗ BAD -->

```
javascript
console.log("Hello, world!"); ``` ```
typescript
const message: string = "Hello, TypeScript!"; ``` ```
python
print("Hello, Python!") ```

🔧 Options

json
{
  "markdown-preferences/canonical-code-block-language": [
    "error",
    {
      "languages": {
        "javascript": "js",
        "jsx": "js",
        "typescript": "ts",
        "tsx": "ts",
        "python": "py",
        "bash": "sh",
        "shell": "sh",
        "zsh": "sh"
      }
    }
  ]
}

languages

An object mapping language names to their preferred canonical equivalents.

  • Type: Record<string, string>

  • Default:

    json
    {
      "javascript": "js",
      "jsx": "js",
      "mjs": "js",
      "cjs": "js",
      "typescript": "ts",
      "tsx": "ts",
      "mts": "ts",
      "cts": "ts",
      "python": "py",
      "bash": "sh",
      "shell": "sh",
      "zsh": "sh",
      "yml": "yaml",
      "markdown": "md",
      "rust": "rs",
      "golang": "go",
      "cplusplus": "cpp",
      "c++": "cpp",
      "postgresql": "sql",
      "mysql": "sql",
      "sqlite": "sql"
    }

📚 Further Reading

🚀 Version

This rule was introduced in eslint-plugin-markdown-preferences v0.9.0

🔍 Implementation