eslint-plugin-node-dependencies

0.12.0 • Public • Published

Introduction

eslint-plugin-node-dependencies is ESLint plugin to check Node.js dependencies.

::: This Plugin is still in an EXPERIMENTAL STATE :::

NPM license NPM version NPM downloads NPM downloads NPM downloads NPM downloads NPM downloads Build Status Coverage Status

📛 Features

This ESLint plugin checks package.json and provides linting rules related to dependencies problems.

📖 Documentation

See documents.

💿 Installation

npm install --save-dev eslint eslint-plugin-node-dependencies

Requirements

  • ESLint v6.0.0 and above
  • Node.js v14.16.0 and above

📖 Usage

Add node-dependencies to the plugins section of your eslint.config.js or .eslintrc configuration file (you can omit the eslint-plugin- prefix)
and either use one of the two configurations available (recommended) or configure the rules you want:

The recommended configuration (New Config)

The plugin.configs["flat/recommended"] config enables a subset of the rules that should be most useful to most users. See lib/configs/rules/recommended.ts for more details.

// eslint.config.js
import * as nodeDependenciesPlugin from "eslint-plugin-node-dependencies"

export default [
    ...nodeDependenciesPlugin.configs["flat/recommended"],
];

The recommended configuration (Legacy Config)

The plugin:node-dependencies/recommended config enables a subset of the rules that should be most useful to most users. See lib/configs/rules/recommended.ts for more details.

// .eslintrc.js
module.exports = {
    "plugins": [
        "node-dependencies"
    ],
    "extends": [
         // add more generic rulesets here, such as:
         // 'eslint:recommended',
        "plugin:node-dependencies/recommended"
    ]
}

Advanced Configuration

Override/add specific rules configurations. See also: http://eslint.org/docs/user-guide/configuring.

// eslint.config.js
import * as nodeDependenciesPlugin from "eslint-plugin-node-dependencies"

export default [
    {
        plugins: { "node-dependencies": nodeDependenciesPlugin }
        rules: {
            // Override/add rules settings here, such as:
            "node-dependencies/rule-name": "error"
        }
    }
];
// .eslintrc.js
module.exports = {
    "plugins": [
        "node-dependencies"
    ],
    "rules": {
        // Override/add rules settings here, such as:
        "node-dependencies/rule-name": "error"
    }
}

Parser Configuration

If you have specified a parser, you need to configure a parser for .json.

For example, if you are using the "@babel/eslint-parser", configure it as follows:

module.exports = {
  // ...
  extends: [ "plugin:node-dependencies/recommended"],
  // ...
  parser: "@babel/eslint-parser",
  // Add an `overrides` section to add a parser configuration for json.
  overrides: [
    {
      files: ["*.json", "*.json5"],
      parser: "jsonc-eslint-parser",
    },
  ],
  // ...
};

✅ Rules

The --fix option on the command line automatically fixes problems reported by rules which have a wrench 🔧 below. The rules with the following star ⭐ are included in the plugin:node-dependencies/recommended config.

Possible Errors

Rule ID Description
node-dependencies/compat-engines enforce the versions of the engines of the dependencies to be compatible.
node-dependencies/no-dupe-deps disallow duplicate dependencies.
node-dependencies/valid-semver enforce versions that is valid as a semantic version.

Best Practices

Rule ID Description
node-dependencies/absolute-version require or disallow absolute version of dependency.
node-dependencies/no-deprecated disallow having dependencies on deprecate packages.
node-dependencies/no-restricted-deps Disallows dependence on the specified package.

Stylistic Issues

Rule ID Description
node-dependencies/prefer-caret-range-version require caret(^) version instead of range version. 🔧
node-dependencies/prefer-tilde-range-version require tilde(~) version instead of range version. 🔧

Deprecated

  • ⚠️ We're going to remove deprecated rules in the next major release. Please migrate to successor/new rules.
  • 😇 We don't fix bugs which are in deprecated rules since we don't have enough resources.
Rule ID Replaced by
node-dependencies/valid-engines node-dependencies/compat-engines

🚀 To Do More Verification

Verify JSON

You can verify the JSON files by checking and installing eslint-plugin-jsonc.

Verify using JSON Schema

You can verify using JSON Schema by checking and installing eslint-plugin-json-schema-validator.

🍻 Contributing

Welcome contributing!

Please use GitHub's Issues/PRs.

Development Tools

  • npm test runs tests and measures coverage.
  • npm run update runs in order to update readme and recommended configuration.
  • npm run new [new rule name] runs to create the files needed for the new rule.
  • npm run docs:watch starts the website locally.

👫 Related Packages

🔒 License

See the LICENSE file for license rights and limitations (MIT).

Package Sidebar

Install

npm i eslint-plugin-node-dependencies

Weekly Downloads

2,860

Version

0.12.0

License

MIT

Unpacked Size

85.4 kB

Total Files

27

Last publish

Collaborators

  • ota-meshi