.TH "NPM\-EXPLAIN" "1" "November 2022" "9.1.1" .SH "NAME" \fBnpm-explain\fR .SH Synopsis .SH Description .P This command will print the chain of dependencies causing a given package .br to be installed in the current project\. .P If one or more package specs are provided, then only packages matching .br one of the specifiers will have their relationships explained\. .P The package spec can also refer to a folder within \fB\|\./node_modules\fP .P For example, running \fBnpm explain glob\fP within npm's source tree will show: .RS 2 .nf glob@7\.1\.6 node_modules/glob glob@"^7\.1\.4" from the root project glob@7\.1\.1 dev node_modules/tacks/node_modules/glob glob@"^7\.0\.5" from rimraf@2\.6\.2 node_modules/tacks/node_modules/rimraf rimraf@"^2\.6\.2" from tacks@1\.3\.0 node_modules/tacks dev tacks@"^1\.3\.0" from the root project .fi .RE .P To explain just the package residing at a specific folder, pass that as the .br argument to the command\. This can be useful when trying to figure out .br exactly why a given dependency is being duplicated to satisfy conflicting .br version requirements within the project\. .RS 2 .nf $ npm explain node_modules/nyc/node_modules/find\-up find\-up@3\.0\.0 dev node_modules/nyc/node_modules/find\-up find\-up@"^3\.0\.0" from nyc@14\.1\.1 node_modules/nyc nyc@"^14\.1\.1" from tap@14\.10\.8 node_modules/tap dev tap@"^14\.10\.8" from the root project .fi .RE .SH Configuration .SH See Also .RS 1 .IP \(bu 2 package spec .IP \(bu 2 npm config .IP \(bu 2 npmrc .IP \(bu 2 npm folders .IP \(bu 2 npm ls .IP \(bu 2 npm install .IP \(bu 2 npm link .IP \(bu 2 npm prune .IP \(bu 2 npm outdated .IP \(bu 2 npm update .RE