Предположим, вы хотите установить библиотеку lib-a
, которая имеет зависимости dep-1
и dep-2
. Если lib-a
объявила в своем пакете .json использовать устаревшую версию dep-2
(скажем, она не работает на node 0.8.0, которая только что вышла), но есть ветвь dep-2
, который работает с node 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
и он установит ветвь node 0.8.0 dep-2
. Но для этого требуется доступ к модификации lib-a
, что для моего конкретного случая я не делаю. С технической точки зрения я мог бы раскошелиться lib-a
и сделать вышеуказанное изменение package.json. Но в моем конкретном случае lib-a
является зависимостью другой библиотеки, поэтому мне пришлось бы раскодировать проект, на который он ссылался, и дальше и дальше...
Итак, вопрос в том, есть ли способ сказать 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
Это было бы потрясающе. Если это невозможно, то было бы хорошо знать, поэтому я могу подготовиться к тому, чтобы развернуть/настроить цепочку проектов.