Supongamos que desea instalar una biblioteca lib-a
que tiene dependencias dep-1
y dep-2
. Si lib-a
ha declarado en su paquete.json usar una versión de dep-2
que está desactualizada (digamos que no funciona en el nodo 0.8.0 que acaba de salir), pero hay una rama de dep-2
que funciona con el nodo 0.8 .0 - nombre de la rama node0.8.0
.Al instalar un paquete con NPM, ¿puede decirle que use una versión diferente de una de sus dependencias?
Así que los paquetes de 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 una manera de contar la NGP para instalar lib-a
, pero el uso de dep-2#node0.8.0
en lugar de dep-2
?
Con NPM puede 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 de lib-a
, se veía que utilizar dep-2#node0.8.0
así:
{
"name": "lib-a",
"dependencies": {
"dep-1": ">= 1.5.0",
"dep-2": "git://github.com/user-c/dep-2#node0.8.0"
}
}
modificando la package.json a continuación, puede ejecutar
npm install lib-a
e instalará el nodo 0.8.0 compatible con la rama dep-2
. Pero, eso requiere que tenga acceso a la modificación de lib-a
, que para mi caso específico no tengo. Técnicamente, podría fork lib-a
y hacer que lo anterior cambie a package.json. Pero en mi caso concreto, lib-a
es una dependencia de otra biblioteca, así que tendría que desembolsar el proyecto se hace referencia en, y sigue y sigue ...
Entonces la pregunta es, ¿hay una manera de decirle a NPM que instale lib-a
y decirle que use la rama node0.8.0
de dep-2
? Algo como esto:
npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0
Eso sería genial. Si no es posible, sería bueno saberlo, así puedo prepararme para tener que bifurcar/personalizar la cadena de proyectos.
Parece que si instala la dependencia en primer lugar, a continuación, las otras bibliotecas que requieren esa dependencia no descargará la suya. ¡Eso resuelve el problema! ¡Gracias! –
¿Es eso correcto? Probé npm -g install/path/to/my/fork-with-fix y luego npm -g install package-which-should-use-forked-dependency-with-fix y ... aún descarga la versión oficial. –
Eche un vistazo al enlace 'npm'. – knownasilya