При установке узла (например, v10.4.0
) он поставляется с копией npm, которая дедуплицируется и избегает чрезвычайно глубоких путей.например, просматривая C:\Program Files\nodejs\node_modules\npm\node_modules\libnpmhook\node_modules\npm-registry-fetch
, нет никаких подпапок, потому что дочерние модули были перемещены ближе к корню.
Однако при загрузке официального zip из https://github.com/npm/npm/archive/v6.1.0.zip, вы в конечном итоге получаете что-тото есть не дедуплицировано и имеет очень длинные пути.например, взяв тот же пример, что и выше, он идет намного глубже, чем npm-registry-fetch
:
node_modules\libnpmhook\node_modules\npm-registry-fetch\node_modules\make-fetch-happen\node_modules\https-proxy-agent\node_modules\agent-base\node_modules\es6-promisify\node_modules\es6-promise\lib\es6-promise\promise\resolve.js
Аналогично, если запустить npm install npm@6.1.0
в чистой папке, вы получите такое же глубокое дерево.
Вопрос : как можно получить или создать дерево npm, которое оптимизировано и аналогично тому, которое устанавливается с помощью самого Node?