2

I'm trying to figure out exactly what's going on with npm dependencies.

The shortest specific form of my question is: given that my transitive dependency graph invokes a certain package multiple times with different versions, why are those different versions not showing up in either npm list or the file system?

I don't want to clutter the global namespace with junk just for testing, so will use my actual current project; it's small enough to be clear, I think.

C:\ayane>npm list [email protected] C:\ayane +-- [email protected] | +-- [email protected] | +-- [email protected] | +-- [email protected] | `-- [email protected] +-- [email protected] | `-- [email protected] | +-- [email protected] | +-- [email protected] | | `-- [email protected] | +-- [email protected] | +-- [email protected] | | `-- [email protected] | | +-- [email protected] | | `-- [email protected] | +-- [email protected] | `-- [email protected] +-- [email protected] | `-- [email protected] +-- [email protected] +-- [email protected] +-- [email protected] `-- [email protected] 

That looks fine so far except ayane depends on clause-normal-form 2.4.0 but dimacs-parser and tptp-parser depend on clause-normal-form 2.3.0; why is this not showing in the above?

C:\ayane>tree /a Folder PATH listing for volume OS Volume serial number is C685-B1F1 C:. \---node_modules +---.bin +---balanced-match +---big-integer +---big-rational +---brace-expansion +---clause-normal-form +---clone +---command-files +---commander +---concat-map | +---example | \---test +---dimacs-parser +---fs.realpath +---get-stdin +---glob +---graceful-readlink +---inflight +---inherits +---iop +---lodash | \---fp +---minimatch +---once +---path-is-absolute +---tptp-parser \---wrappy 

Same question: why is only one clause-normal-form directory appearing?

1 Answer 1

1

It is probably because it will only install one version of the same module unless told otherwise. This would be a issue if clause-normal-form version 2.3.0 and 2.4.0 is incompatible, you might run into some trouble if they are. For the best solution so your code works without issues you need to use peerDependencies in the package.json

https://nodejs.org/en/blog/npm/peer-dependencies/

P.S : This does not work on npm version 3 and above, it will only give a warning for us to install them manually

Sign up to request clarification or add additional context in comments.

1 Comment

You're right! If they differ in major version, it does handle both.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.