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.

questionAnswers(1)

yourAnswerToTheQuestion