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.