Why is the NPM module dependency always set to nested node_modules?

As you know, NPM v3 tries to keep the dependency tree as flat as possible. I used to think that it sets dependencies as nested only to resolve conflicts if there is more than one version of the same module.

However, I noticed something strange in the module protractor. It has a dependency webdriver-manager, which is always set as nested, in node_modules/protractor/node_modules. You can easily reproduce this by running npm install protractorin an empty folder.

Why is this happening?

+4
source share
1 answer

, . npmV3 Protractor

Protractor npmV3

enter image description here

Protractor npmV2.*

enter image description here

Flat Structure, , webdriver-manager . - .

. , , node_modules . , ( ) .

, , , C. C B, , A. , B v1.0 - dep, B v2.0 . npm v3 , npm v2 , , B , - C.

webdriver-manager package.json "minimist": "^1.2.0",, , ,

  β”œβ”€ optimist@0.6.1
   β”‚  β”œβ”€ wordwrap@0.0.3
   β”‚  └─ minimist@0.0.10

, - webdriver-manager protractor node_modules

npm-remote-ls protractor

+2

Source: https://habr.com/ru/post/1657227/


All Articles