Instalar dependencies privadas a través de NPM

De acuerdo con la documentation , podemos usar repositorys git como dependencies de NPM:

Las URL de Git pueden ser de la forma:

git://github.com/user/project.git#commit-ish git+ssh://user@hostname:project.git#commit-ish git+ssh://user@hostname/project.git#commit-ish git+http://user@hostname/project/blah.git#commit-ish git+https://user@hostname/project/blah.git#commit-ish 

El commit-ish puede ser cualquier tag, sha o branch que se pueda suministrar como argumento para el pago de git. El valor pnetworkingeterminado es master .

Eso está bien y funciona como un encanto, para repositorys públicos. Para repositorys privados (por ejemplo, de GitHub), probé esto:

 { "name": "test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { "builder": "git+ssh://github.com/IonicaBizau/myprivatemodule.git" }, "author": "", "license": "ISC" } 

Cuando hago npm install, obtengo el siguiente resultado:

 $ npm i npm WARN package.json test@1.0.0 No description npm WARN package.json test@1.0.0 No repository field. npm WARN package.json test@1.0.0 No README data npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git Cloning into bare repository '/home/....'... npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git Permission denied (publickey). npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git fatal: Could not read from remote repository. npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git Please make sure you have the correct access rights npm ERR! git clone ssh://github.com/IonicaBizau/myprivatemodule.git and the repository exists. npm ERR! Error: Command failed: Cloning into bare repository '/home/...'... npm ERR! Permission denied (publickey). npm ERR! fatal: Could not read from remote repository. npm ERR! npm ERR! Please make sure you have the correct access rights npm ERR! and the repository exists. 

Este error aparece solo para repositorys privados.

Tengo el acceso a este repository y haciendo git clone ... funciona, a través de SSH.

¿Cuál es la solución para este problema?

Como se dice en la documentation, la url de git debe ser de esta forma: git+ssh://user@hostname/project.git#commit-ish y creo que se necesita acceder a github a través de ssh con el usuario git , por lo tanto su url de dependencia probablemente debería ser:

"git+ssh://git@github.com/IonicaBizau/myprivatemodule.git"

Para mí, solo cambiar la URL no lo hizo funcionar. Estos son los pasos que tuve que tomar para solucionar esto:

  • git+ssh://git@github.com:owner/repo.git#master
  • Crea una key de implementación y agrégala al repository
  • Editar git config ( ~/.ssh/config crea el file si no existe) para forzar el uso de DeployKey en lugar de la key ssh pnetworkingeterminada

Después de eso, la installation de npm simplemente funcionó. Todas las otras opciones y soluciones resultaron de la installation de la installation de npm

He estado usando el prompt Node.js y un prompt de Babun que han funcionado bien para mí. Recibí este error con "npm install" en un nuevo repository. Cuando utilicé el Git Shell de GitHub funcionó bien.

Ya había configurado mis keys SSH y no tuve este problema con ninguna otra installation npm que hice.