Czy podczas instalowania pakietu za pomocą NPM możesz powiedzieć mu, aby używał innej wersji jednej z jego zależności?
Powiedzmy, że chcesz zainstalować bibliotekęlib-a
który ma zależnościdep-1
idep-2
. Jeślilib-a
zadeklarował w swoim pakiecie.json użycie wersjidep-2
to jest nieaktualne (powiedzmy, że nie działa w węźle 0.8.0, który właśnie się pojawił), ale istnieje gałąźdep-2
działa z węzłem 0.8.0 - nazwa oddziałunode0.8.0
.
Pakiety w równaniu to:
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 na przekazanie NPM do zainstalowanialib-a
, ale użyjdep-2#node0.8.0
zamiastdep-2
?
Dzięki NPM możesz zainstalować określoną gałąź projektu takiego jak ten:
npm install git://github.com/user-c/dep-2#node0.8.0
A jeśli miałbym dostosować pakiet.json zlib-a
, mógłbyś powiedzieć, żeby używałdep-2#node0.8.0
lubię to:
{
"name": "lib-a",
"dependencies": {
"dep-1": ">= 1.5.0",
"dep-2": "git://github.com/user-c/dep-2#node0.8.0"
}
}
Modyfikując pakiet.json, możesz go uruchomić
npm install lib-a
i zainstaluje kompatybilny węzeł 0.8.0dep-2
Oddział. Ale to wymaga dostępu do modyfikacjilib-a
, co w moim konkretnym przypadku nie. Technicznie mogłem się rozwidlićlib-a
i zmień powyższy kod na package.json. Ale w moim konkretnym przypadkulib-a
jest zależnościąinne więc musiałbym rozwidlać projekt, do którego się odwołuje, i dalej i dalej ...
Więc pytanie brzmi, czy istnieje sposób na przekazanie NPM do zainstalowanialib-a
i powiedz mu, aby używałnode0.8.0
oddział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ć, więc mogę przygotować się do rozłożenia / dostosowania łańcucha projektów.