specific devdependencies all git npm gitlab

git - devdependencies - npm install global



Instalar el módulo npm desde el repositorio privado de gitlab (8)

Estamos usando GitLab para nuestro proyecto privado. Hay algunas bibliotecas bifurcadas de github, que queremos instalar como módulo npm. Instalar ese módulo directamente desde npm está bien y por ejemplo esto:

npm install git://github.com/FredyC/grunt-stylus-sprite.git

... funciona correctamente también, pero haciendo lo mismo para GitLab, simplemente cambiar el dominio me da este error.

npm WARN `git config --get remote.origin.url` returned wrong result (git://git.domain.com/library/grunt-stylus-sprite.git) npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git Cloning into bare repository ''D:/users/Fredy/AppData/Roaming/npm-cache/_git-remotes/git-git-domain-com-library-grunt-stylus-sprite-git-6f33bc59''... npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git fatal:unable to connect to git.domain.com: npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git git.domain.com[0: 77.93.195.214]: errno=No error npm ERR! Error: Command failed: Cloning into bare repository ''D:/users/Fredy/App Data/Roaming/npm-cache/_git-remotes/git-git-domain-com-library-grunt-stylus-spr ite-git-6f33bc59''... npm ERR! fatal: unable to connect to git.domain.com: npm ERR! git.domain.com[0: xx.xx.xx.xx]: errno=No error

Desde la interfaz web de GitLab, tengo esta URL [email protected]:library/grunt-stylus-sprite.git . Al ejecutar esto contra la npm install , intenta instalar el módulo git desde el registro npm.

Sin embargo, el uso de URL: [email protected]:library/grunt-stylus-sprite.git repente me está pidiendo la contraseña. Mi clave SSH no incluye frase de contraseña, así que supongo que no pudo cargar esa clave. Tal vez hay alguna configuración para la que me he perdido? La clave se encuentra en la ubicación estándar en mi directorio personal con el nombre "id_rsa" .

Estoy en Windows 7 x64.

ACTUALIZAR

Desde NPM v3 existe soporte integrado para GitLab y otras fuentes (BitBucket, Gist), desde donde puede instalar paquetes. Desafortunadamente, solo funciona para los públicos, por lo que no está relacionado exactamente con esto, pero algunos podrían considerarlo útil.

npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]

Consulte la documentación: https://docs.npmjs.com/cli/install


Aunque la pregunta es sobre Gitlab, esta pregunta está bastante bien clasificada en la búsqueda de Google, así que aquí hay más información sobre cómo solucionar un problema similar que obtuve con Github.

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

  • git+ssh://[email protected]:owner/repo.git#master
  • Crea una clave de implementación y agrégala al repositorio
  • Editar git config ( ~/.ssh/config crea el archivo si no existe) para forzar el uso de DeployKey en lugar de la clave ssh predeterminada

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


En lugar de git:// , use git+ssh:// y npm debería hacer lo correcto.


Ninguna de las otras respuestas funcionó para mí para un repositorio privado de gitlab.com ...

Esto funciona sin embargo:

npm i -S git+ssh://[email protected]:<org>/<project>.git

Es solo la url git ssh clone del campo de entrada "clonar" de la página del proyecto con git+ssh:// agregado al frente.


Para mí, configure el paquete.json como funciona a continuación.

"dependencies": { "<module-name>": "git+http://<username>:<token>@url.git", }

El token se obtiene de su "Configuración de perfil - Token de acceso".


Por lo que puedo decir dónde estás yendo mal es el protocolo git:// . GitLab solo es compatible con HTTP (s) y SSH para clones. Entonces debes usar uno de esos métodos en lugar del protocolo git.


Solo para cualquier persona que se tropiece con esto, no pude hacerlo funcionar a través de HTTPS en absoluto, parece que no es compatible con el enlace directo al repositorio (por ejemplo, https://git.domain.com/user/somerepo.git ), ni admite las versiones de archivo .tar , .tar.bz o .zip .

Parece que solo funciona con el archivo .tar.gz .

Ejemplo completo (con la versión etiquetada):

https://git.domain.com/user/somerepo/repository/archive.tar.gz?ref=v1.2.3


Usted tiene los siguientes métodos para conectarse a un repositorio privado de gitlab

Con SSH

git+ssh://[email protected]:Username/Repository#{branch|tag} git+ssh://[email protected]/Username/Repository#{branch|tag}

Con HTTPS

git+https://[email protected]/Username/Repository#{branch|tag}

Con HTTPS y token de despliegue

git+https://<token-name>:<token>@gitlab.com/Username/Repository#{branch|tag}


Vaya a User Settings > Access Tokens y cree un nuevo access token con el permiso read_registry .

Copie el token generado, lo necesitamos para nuestro archivo package.json .

Ahora en package.json agrega la dependency siguiente manera:

"my-module": "git+https://Xaqron:[email protected]/Xaqron/my-module"

Reemplace Xaqron con su nombre de usuario y token con el token generado. Puede especificar la branch y la tag al final de la url mediante #{branch|tag} .

Nota: Dado que token de acceso se encuentra en package.json cualquiera que tenga acceso a este proyecto puede leer el repositorio, así que supongo que su proyecto es privado.