Załóżmy, że chcesz zainstalować bibliotekę lib-a
, która ma zależności: dep-1
i dep-2
. Jeśli lib-a
zadeklarował w swoim pakiecie.json, aby użyć wersji dep-2
, która jest nieaktualna (powiedzmy, że nie działa na węźle 0.8.0, który właśnie wyszedł), ale istnieje gałąź dep-2
, która działa z węzłem 0.8 .0 - nazwa oddziału node0.8.0
.Czy podczas instalowania pakietu z NPM można użyć innej wersji jednej z jego zależności?
Więc pakiety w równaniu są:
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
Czy istnieje sposób, aby powiedzieć KMP zainstalować lib-a
, ale zamiast używać dep-2#node0.8.0
dep-2
?
Z KMP można zainstalować konkretną gałąź takim projekcie:
npm install git://github.com/user-c/dep-2#node0.8.0
A gdybym dostosować package.json z lib-a
, można powiedzieć, że do korzystania dep-2#node0.8.0
tak:
{
"name": "lib-a",
"dependencies": {
"dep-1": ">= 1.5.0",
"dep-2": "git://github.com/user-c/dep-2#node0.8.0"
}
}
modyfikując package.json można następnie uruchomić
npm install lib-a
i zainstaluje gałąźwęzła zgodną z 0.8.0. Wymaga to jednak dostępu do modyfikacji lib-a
, której w moim przypadku nie mam. Technicznie, mógłbym rozwidlić lib-a
i dokonać powyższej zmiany na pakiet.json. Ale w moim konkretnym przypadku lib-a
istnieje zależność inny biblioteki, więc będę musiał bulić projekt to odwołuje się, i tak dalej ...
Więc pytanie jest, jest sposobem powiedz NPM, aby zainstalować lib-a
, i powiedzieć, aby użyć oddziału node0.8.0
z dep-2
? Coś takiego:
npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0
To byłoby niesamowite. Jeśli nie jest to możliwe, dobrze byłoby wiedzieć, że mogę przygotować się do rozwidlenia/dostosowania łańcucha projektów.
Wygląda na to, jeśli najpierw zainstalować zależność, wówczas inne biblioteki, które wymagają ta zależność nie będzie pobierana samodzielnie. To rozwiązuje problem! Dzięki! –
Czy to prawda? Próbowałem npm -g install/path/to/my/fork-with-fix, a następnie npm -g install pakiet-który-powinien-używać-forked-dependency-with-fix i ... nadal pobiera oficjalną wersję. –
Spójrz na 'npm link'. – knownasilya