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-ai 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.

questionAnswers(1)

yourAnswerToTheQuestion