При установке пакета с помощью NPM вы можете сказать ему использовать другую версию одной из его зависимостей?
Скажем, вы хотите установить библиотекуlib-a
который имеет зависимостиdep-1
а такжеdep-2
, Еслиlib-a
объявил в своем package.json использовать версиюdep-2
это устарело (скажем, это не работает на узле 0.8.0, который только что вышел), но есть ветвьdep-2
который работает с узлом 0.8.0 - имя веткиnode0.8.0
.
Итак, пакеты в уравнении:
git://github.com/user-a/lib-a
git://github.com/user-b/dep-1
git://github.com/user-c/dep-2
git://github.com/user-c/dep-2#node0.8.0
Есть ли способ сказать NPM для установкиlib-a
, но использоватьdep-2#node0.8.0
вместоdep-2
?
С помощью NPM вы можете установить определенную ветку проекта следующим образом:
npm install git://github.com/user-c/dep-2#node0.8.0
И если бы я должен был настроить package.json изlib-a
Вы могли бы сказать это использоватьdep-2#node0.8.0
как это:
{
"name": "lib-a",
"dependencies": {
"dep-1": ">= 1.5.0",
"dep-2": "git://github.com/user-c/dep-2#node0.8.0"
}
}
Изменяя package.json, вы можете запустить
npm install lib-a
и он установит совместимый узел 0.8.0dep-2
ветка. Но это требует, чтобы у меня был доступ к изменениюlib-a
, что для моего конкретного случая я не имею. Технически я мог раскошелитьсяlib-a
и внесите вышеуказанные изменения в package.json. Но в моем конкретном случае,lib-a
это зависимостьanother библиотека, так что я должен раскошелиться на проект, на который она ссылается, и так далее ...
Таким образом, вопрос в том, есть ли способ сказать NPM для установкиlib-a
и скажи ему использоватьnode0.8.0
филиалdep-2
? Что-то вроде этого:
npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0
Это было бы круто. Если это невозможно, это было бы полезно узнать, поэтому я могу подготовиться к тому, чтобы раскошелиться / настроить цепочку проектов.