Al instalar un paquete con NPM, ¿puede decirle que use una versión diferente de una de sus dependencias?

Digamos que quieres instalar una bibliotecalib-a el cual tiene dependenciasdep-1 ydep-2. Silib-a ha declarado en su package.json utilizar una versión dedep-2 Eso está desactualizado (digamos que no funciona en el nodo 0.8.0 que acaba de salir), pero hay una rama dedep-2 que funciona con el nodo 0.8.0 - nombre de la ramanode0.8.0.

Así que los paquetes en la ecuación son:

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

¿Hay alguna manera de decirle a NPM que instale?lib-a, pero usadep-2#node0.8.0 en lugar dedep-2?

Con NPM puedes instalar una rama específica de un proyecto como este:

npm install git://github.com/user-c/dep-2#node0.8.0

Y si tuviera que personalizar el package.json delib-a, podrias decirle que usedep-2#node0.8.0 Me gusta esto:

{
  "name": "lib-a",
  "dependencies": {
    "dep-1": ">= 1.5.0",
    "dep-2": "git://github.com/user-c/dep-2#node0.8.0"
  }
}

Al modificar el package.json entonces puede ejecutar

npm install lib-a

e instalará el nodo 0.8.0 compatibledep-2 rama. Pero, eso requiere tener acceso a modificaciones.lib-a, que para mi caso específico no lo hago. Técnicamente, podría bifurcarlib-a y hacer el cambio anterior a package.json. Pero en mi caso específico,lib-a es una dependencia deotro biblioteca, así que tendría que bifurcar el proyecto al que se hace referencia, y así sucesivamente ...

Entonces la pregunta es, ¿hay alguna manera de decirle a NPM que instalelib-a, y dile que use elnode0.8.0 rama dedep-2? Algo como esto:

npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0

Que sería increíble. Si no es posible, sería bueno saberlo para poder prepararme para tener que desentrañar / personalizar la cadena de proyectos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta