eslint-plugin-node-dependencies

ESLint plugin to check Node.js dependencies.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
eslint-plugin-node-dependencies
1650.12.024 days ago3 years agoMinified + gzip package size for eslint-plugin-node-dependencies in KB

Readme

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

:namebadge: Features

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

:book: Documentation

See documents.

:cd: Installation

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

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

:book: 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",
    },
  ],
  // ...
};

:whitecheckmark: Rules


The --fix option on the command line
automatically fixes problems reported by rules which have a wrench :wrench: below. The rules with the following star :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. | :star: | | node-dependencies/no-dupe-deps | disallow duplicate dependencies. | :star: | | node-dependencies/valid-semver | enforce versions that is valid as a semantic version. | :star: |

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. | :wrench: | | node-dependencies/prefer-tilde-range-version | require tilde(~) version instead of range version. | :wrench: |

Deprecated

  • :warning: We're going to remove deprecated rules in the next major release. Please migrate to successor/new rules.
  • :innocent: 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 |

:rocket: 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.


:beers: 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.

:couple: Related Packages

:lock: License

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