node.js - como - Al instalar un paquete con NPM, ¿puede decirle que use una versión diferente de una de sus dependencias?
nvm version (1)
Sintaxis de instalación de NPM:
npm install (with no args in a package dir)
npm install <tarball file>
npm install <tarball url>
npm install <folder>
npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact]
npm install [@<scope>/]<name>@<tag>
npm install [@<scope>/]<name>@<version>
npm install [@<scope>/]<name>@<version range>
npm i (with any of the previous argument usage)
para que pueda elegir uno de estos métodos para instalar sus módulos.
El caso de la forma más sencilla de instalar una versión específica es esta:
npm install [email protected]
más información: https://docs.npmjs.com/cli/install
Supongamos que desea instalar una biblioteca lib-a
que tenga dependencias dep-1
y dep-2
. Si lib-a
ha declarado en su paquete.json que utiliza una versión de dep-2
que está desactualizada (digamos que no funciona en el nodo 0.8.0 que acaba de dep-2
), pero hay una rama de dep-2
que funciona con el nodo 0.8.0 - nombre de rama node0.8.0
.
Entonces 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 use dep-2#node0.8.0
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 paquete .json de lib-a
, podría decirle que use 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"
}
}
Al modificar el paquete.json, puede ejecutar
npm install lib-a
e instalará la rama dep-2
compatible con el nodo 0.8.0. 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 bifurcar lib-a
y hacer que lo anterior cambie a package.json. Pero en mi caso específico, lib-a
es una dependencia de otra biblioteca, así que tendría que copiar el proyecto al que se hace referencia, y así sucesivamente ...
Entonces la pregunta es, ¿hay alguna 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
Que sería increíble. Si no es posible, sería bueno saberlo, así puedo prepararme para tener que bifurcar / personalizar la cadena de proyectos.