dependency-lint
Lints your NPM dependencies and devDependencies reporting which node modules are
- missing and should be added to your
dependenciesordevDependencies - unused and should be removed from your
dependenciesordevDependencies - mislabeled and should be moved from
dependenciestodevDependenciesor vice versa
Installation
Supported on Node.js versions 12, 14, 16
$ npm install dependency-lint
Usage
$ dependency-lint
To automatically remove unused dependencies and move mislabeled dependencies:
$ dependency-lint --auto-correct
How it works
dependency-lint compares the node modules listed in your package.json and
the node modules it determines are used. A node module is used if:
- it is required in a javascript file (or a file that transpiles to javascript)
- one of its executables is used in a script in your
package.jsonor in a shell script
Since this does not cover all the possible ways that a node module can be used,
dependency-lint can be configured
to ignore specific errors. Please create an
issue
anytime you need to use this, so we can discuss new ways to determine if and
how a node module is used.
Configuration
Please see here for an explanation of all the options.
Custom configuration should be placed at dependency-lint.yml in your project directory.
You can create a configuration file by running
dependency-lint --generate-config
Any options not set in your configuration file will be given there default value.
Formatters
Three formatters are available and can be switched between with the --format option
dependency-lint --format <format>
minimal(default) - prints only the modules with errorssummary- prints all modulesjson- prints JSON of the form{dependencies, devDependencies}where each is array of objects with the keysname- name of the modulefiles- list of the files that require the module or execute the modulescripts- list of scripts in yourpackage.jsonthat execute the moduleerror- null or one of the following strings: "missing", "should be dependency", "should be dev dependency", "unused"errorIgnored- if dependency lint has been configured to ignore this error.