Пакеты NPM не могут блокировать свои зависимости (и зависимости зависимостей), например:
{
"name": "my-package",
"version": "1.0.0",
"dependencies": {
"someDep": "^1.2.3"
}
}
my-package@1.0.0
зависит от someDep@^1.2.3
сейчас.
Если когда-нибудь someDep
обновляется до 1.9.0
, и я запускаю npm install my-package@1.0.0
в проекте без package.lock
или yarn.lock
, будет установлено someDep@1.9.0
.
Возможно, между someDep@1.2.3
и * были внесены некоторые критические изменения1017 *, они приведут к поломке my-package@1.0.0
.
Если я установлю версию someDep
для 1.2.3
следующим образом:
{
"name": "my-package",
"version": "1.0.0",
"dependencies": {
"someDep": "1.2.3"
}
}
Я могу точнозаблокировать версию someDep
как 1.2.3, но я не могу принудительно исправить зависимости someDep
, чтобы они тоже могли сломать меня.
Что мы можем сделать, чтобы гарантироватьдолгосрочная правильность пакетов NPM?