Ao instalar um pacote com o NPM, você pode dizer para usar uma versão diferente de uma de suas dependências?
Digamos que você queira instalar uma bibliotecalib-a
que tem dependênciasdep-1
edep-2
. E selib-a
declarou em seu pacote.json para usar uma versão dodep-2
que está desatualizado (digamos que não funciona no nó 0.8.0 que acabou de sair), mas há um ramo dedep-2
que trabalha com o nó 0.8.0 - nome da ramificaçãonode0.8.0
.
Então os pacotes na equação são:
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
Existe uma maneira de dizer ao NPM para instalarlib-a
, mas usedep-2#node0.8.0
ao invés dedep-2
?
Com o NPM você pode instalar um ramo específico de um projeto como este:
npm install git://github.com/user-c/dep-2#node0.8.0
E se eu fosse para personalizar o package.json delib-a
, você poderia dizer para usardep-2#node0.8.0
como isso:
{
"name": "lib-a",
"dependencies": {
"dep-1": ">= 1.5.0",
"dep-2": "git://github.com/user-c/dep-2#node0.8.0"
}
}
Modificando o pacote.json você pode então executar
npm install lib-a
e instalará o nó 0.8.0 compatíveldep-2
ramo. Mas isso requer que eu tenha acesso à modificaçãolib-a
, que no meu caso específico eu não faço. Tecnicamente, eu poderia garfolib-a
e faça a mudança acima para package.json. Mas no meu caso específico,lib-a
é uma dependência deoutro biblioteca, então eu teria que desembolsar o projeto que é mencionado, e assim por diante ...
Então a questão é, existe uma maneira de dizer ao NPM para instalarlib-a
, e diga para usar onode0.8.0
ramo dedep-2
? Algo assim:
npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0
Isso seria incrível. Se isso não for possível, seria bom saber para que eu possa me preparar para ter que costurar / personalizar a cadeia de projetos.