Skip to content

node-dependencies/no-restricted-deps

Disallows dependence on the specified package.

📖 Rule Details

This rule disallows dependence on specified (that is, user-defined) package.

🔧 Options

This rule takes a list of strings, where each string is a package name:

json
{
  "node-dependencies/no-restricted-deps": ["error", "foo", "bar"]
}

Alternatively, the rule also accepts objects, where the package name, an optional version, and an optional custom message are specified:

json
{
  "node-dependencies/no-restricted-deps": ["error",
    {
      "package": "foo",
      "message": "Use 'foo-x' instead."
    },
    {
      "package": "bar",
      "version": "<2.0.0"
    },
    {
      "package": "faker",
      "version": "6.6.6"
    },
    {
      "package": "node-ipc",
      "version": "9.2.2 || ^10.1.1 || ^11.0.0"
    }
  ]
}

Object options can also be set to deep option. Specify "local" or "server".

  • "local" ... Find the package.json in your local node_modules to check the dependencies deeply.
  • "server" ... Above plus, use the npm command to check the dependencies deeply. Note that this can be very time consuming.

Examples for strings

json
{
  "node-dependencies/no-restricted-deps": ["error", "foo", "bar"]
}
jsonc
/* eslint "node-dependencies/no-restricted-deps": ["error", "foo", "bar"] */
{
  "devDependencies": {
    /* ✗ BAD */
    "foo": "^1.0.0",
    "bar": "^2.0.0",

    /* ✓ GOOD */
    "baz": "^1.0.0",
    "qux": "^1.0.0"
  }
}

Examples for objects

json
{
  "node-dependencies/no-restricted-deps": ["error",
    {
      "package": "foo",
      "message": "Use 'foo-x' instead."
    },
    {
      "package": "bar",
      "version": "<2.0.0"
    }
  ]
}
jsonc
/* eslint "node-dependencies/no-restricted-deps": ["error",
    {
      "package": "foo",
      "message": "Use 'foo-x' instead."
    },
    {
      "package": "bar",
      "version": "<2.0.0"
    }
  ] */
{
  "devDependencies": {
    /* ✗ BAD */
    "foo": "^1.0.0", // Reported. "Use 'foo-x' instead."

    /* ✓ GOOD */
    "bar": "^2.0.0", // This is fine as it does not intersect with '<2.0.0'.
  }
}

🚀 Version

This rule was introduced in eslint-plugin-node-dependencies v0.8.0

🔍 Implementation