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.