Cómo usar el repositorio privado de Github como dependencia npm

203

¿Cómo enumero un repositorio privado de Github como "dependency"en package.json? Intenté las sintaxis de URL de Github de npm como ryanve/example, pero hacerlo npm installen la carpeta del paquete da errores de "no se pudo instalar" para las dependencias privadas. ¿Existe una sintaxis especial (o algún otro mecanismo) para depender de repositorios privados?

ryanve
fuente

Respuestas:

284

Se puede hacer a través de https y oauth o ssh.

https y oauth: cree un token de acceso que tenga alcance "repo" y luego use esta sintaxis :

"package-name": "git+https://<github_token>:[email protected]/<user>/<repo>.git"

o

ssh: configure ssh y luego use esta sintaxis:

"package-name": "git+ssh://[email protected]:<user>/<repo>.git"

(tenga en cuenta el uso de dos puntos en lugar de una barra inclinada antes del usuario)

ryanve
fuente
19
O si tiene ssh configurado en github, omita el token y use: "<package>": "git+ssh://[email protected]/<user>/<repo>.git
steveax
3
¿Cómo lo tienes siempre en la última versión?
Sr. Codealot
25
Agregue #master hasta el final
Jasmine Hegman
44
"package-name": "git+https://<github_token>:[email protected]/<user>/<repo>.git"no funciono para mi Sorprendentemente, cambiar de token y x-oauth-basic hizo el trabajo. Entonces, "package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"funciona para mí. tenga en cuenta que estoy en gitlab y no en github.
misantronic
2
Sobre httpsponer x-oauth-basiccomo el nombre de usuario no es necesario: "package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"funciona también.
kadam
25

Si alguien está buscando otra opción para Git Lab y las opciones anteriores no funcionan, entonces tenemos otra opción. Para una instalación local del servidor Git Lab, hemos encontrado que el enfoque, a continuación, nos permite incluir la dependencia del paquete. Generamos y usamos un token de acceso para hacerlo.

$ npm install --save-dev https://git.yourdomain.com/userOrGroup/gitLabProjectName/repository/archive.tar.gz?private_token=InsertYourAccessTokenHere

Por supuesto, si uno usa una clave de acceso de esta manera, debería tener un conjunto limitado de permisos.

¡Buena suerte!

Steve M
fuente
8

Con git hay un formato https

https://github.com/equivalent/we_demand_serverless_ruby.git

Este formato acepta usuario + contraseña

https://bot-user:[email protected]/equivalent/we_demand_serverless_ruby.git

Entonces, lo que puede hacer es crear un nuevo usuario que se usará solo como un bot , agregar solo permisos suficientes para que pueda leer el repositorio que desea cargar en los módulos NPM y simplemente tener eso directamente en su packages.json

 Github > Click on Profile > Settings > Developer settings > Personal access tokens > Generate new token

En la parte Seleccionar ámbitos, verifique el repositorio : Control total de repositorios privados.

Esto es para que el token pueda acceder a repositorios privados que el usuario puede ver

Ahora cree un nuevo grupo en su organización, agregue este usuario al grupo y agregue solo los repositorios que espera obtener de esta manera (¡permiso de LECTURA ÚNICA!)

Debe asegurarse de enviar esta configuración solo al repositorio privado

Luego puede agregar esto a su / packages.json (bot-user es el nombre del usuario, xxxxxxxxx es el token personal generado)

// packages.json


{
  // ....
    "name_of_my_lib": "https://bot-user:[email protected]/ghuser/name_of_my_lib.git"
  // ...
}

https://blog.eq8.eu/til/pull-git-private-repo-from-github-from-npm-modules-or-bundler.html

equivalente8
fuente
1
Entonces, ¿es seguro comprometer este token de acceso personal y usarlo en algo como Travis CI?
Con Antonakos
@ConAntonakos si el proyecto es un repositorio privado de Github y ha pagado a Travis CI que está ejecutando su repositorio privado de proyectos Github, entonces sí (algo así, ya que no está compartiendo sus credenciales públicamente) También es importante recordar que debe crear y usar credenciales del nuevo usuario de Github que solo tiene acceso de lectura a este repositorio privado. Así que no use su cuenta personal :) ... cree una cuenta de usuario bot que sea más fácil de bloquear en caso de exposición;) ... Si está creando un proyecto bancario, esto no pasará la acreditación ISO, entonces no, nunca es seguro ni siquiera almacena código en GH
equivalente8