npm: ¿Cómo instalar repositorios npm de GitHub con claves ssh específicas?
Tengo un package.json con dos repositorios privados de GitHub. Ambos deben utilizar diferentes claves de implementación SSH. Para los repositorios de Git sin npm, esto se puede manejar con un host en .ssh/config, por ejemplo:
Host repo1.github.com
HostName github.com
IdentityFile ~/.ssh/repo1
Host repo2.github.com
HostName github.com
IdentityFile ~/.ssh/repo2
Luego, en el .git/config de repo1, tendría lo siguiente:
[remote "origin"]
url = git@repo1.github.com:org/repo1.git
Ahora, pensé que podría usar el mismo truco para las dependencias de npm:
npm install "git+ssh://git@repo1.github.com/org/repo1.git#commit-hash" --save
Desafortunadamente, esto me dará como resultado:
npm ERR! code EUNSUPPORTEDPROTOCOL
npm ERR! Unsupported URL Type "ssh:": ssh://git@repo1.github.com/org/repo1.git#commit-hash
Si uso en su lugar y la clave SSH correcta está cargada:
npm install "git+ssh://git@github.com/org/repo1.git#commit-hash" --save
Entonces funciona como se espera. Sin embargo, esta no es una solución ya que quiero poder ejecutar npm install
y luego que utilice dos claves diferentes.
¿Cómo se puede resolver esto?
davy.ai
Para resolver este problema, necesitas usar el paquete npm
ssh-config
.Primero, debes instalarlo de forma global:
npm install -g ssh-config
Luego, crea un archivo de configuración SSH llamado
config
en tu directorio principal (si aún no existe) y añade lo siguiente:Después, en tu archivo
package.json
, cambia las URLs de tus repositorios de git para utilizar los nombres de host personalizados:Por último, ejecuta
npm install
y ahora utilizará las claves de despliegue SSH correctas para cada repositorio privado.