Skip to content

TypeScript · architecture

no-restricted-library-load

eslint:no-restricted-library-load

Apply a configured library-replacement policy to literal dynamic imports, CommonJS loads, and TypeScript import-equals declarations.

Default
error
Fix
none
Languages
typescript

Why

Runtime module loads can bypass the replacement policy enforced for static imports.

Fix

Load the configured replacement library instead of the restricted module.

Before / after

Executed by this rule’s unit tests.

Before

Do not load a restricted library at runtime

src/client.ts · focus
const client = require('axios');

After

Static imports remain the static-import rule's responsibility

src/client.ts · focus
import axios from 'axios';

Limits

  • Only literal dynamic imports, unshadowed CommonJS loads, and TypeScript import-equals declarations are checked.

Message IDs

restrictedLibraryLoad

Options

{
  "additionalProperties": false,
  "properties": {
    "libraries": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "module": {
            "minLength": 1,
            "type": "string"
          },
          "note": {
            "minLength": 1,
            "type": "string"
          },
          "replacement": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "id",
          "module",
          "replacement"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "libraries"
  ],
  "type": "object"
}