Я обнаружил случай, когда npm выбор зависимостей не следовал за node-semver.
Я пытался установить superagent@1.8.5
, и вот дерево зависимостей, которое я получил от npm ls
:
└─┬ superagent@1.8.5
├── component-emitter@1.2.1
├── cookiejar@2.0.6
├─┬ debug@2.6.9
│ └── ms@2.0.0
├── extend@3.0.0
├─┬ form-data@1.0.0-rc3
│ ├── async@1.5.2
│ ├─┬ combined-stream@1.0.8
│ │ └── delayed-stream@1.0.0
│ └─┬ mime-types@2.1.26
│ └── mime-db@1.43.0
├── formidable@1.0.16
├── methods@1.1.2
├── mime@1.3.4
├── qs@2.3.3
├─┬ readable-stream@1.0.27-1
│ ├── core-util-is@1.0.2
│ ├── inherits@2.0.4
│ ├── isarray@0.0.1
│ └── string_decoder@0.10.31
└── reduce-component@1.0.1
И вот я получил formidable@1.0.16
Но когда я посмотрел на dependencies
из superagent@1.8.5, мы можем получить:
dependencies: {
qs: "2.3.3",
formidable: "~1.0.14",
mime: "1.3.4",
component-emitter: "~1.2.0",
methods: "~1.1.1",
cookiejar: "2.0.6",
debug: "2",
reduce-component: "1.0.1",
extend: "3.0.0",
form-data: "1.0.0-rc3",
readable-stream: "1.0.27-1"
},
Зависимость диапазон для formidable
равен ~1.0.14
, что означает, что для него потребуется последняя версия патча 1.0.X
, поскольку нет конфликта зависимостей для formidable
.
Однако, последняя 1.0.X
из formidable
- это 1.0.17
ссылка ссылка , и когда я попробовал официальный калькулятор semver , я также могу получить это довольные версии 1.0.14, 1.0.15, 1.0.16, 1.0.17
.
Я хочу спросить, есть ли другие правила разрешения зависимостей, которые я пропустил?
Спасибо!