npm instala repositorios privados de github por dependencia en el paquete.json


Estoy intentando instalar el repositorio privado de github por npm que incluye otros repositorios privados de github como dependencia.

Han intentado un montón de maneras y mensajes, pero ninguno está funcionando. Esto es lo que estoy haciendo :

npm install git+https://github.com/myusername/mygitrepository.git

En el paquete.json es como:

"dependencies": {
    "repository1name": "git+https://github.com/myusername/repository1.git",
    "repository2name": "git+https://github.com/myusername/repository2.git"
}

¿Cuál es la forma correcta de hacerlo?

Author: cweston, 2014-04-22

8 answers

Prueba esto:

"dependencies" : {
  "name1" : "git://github.com/user/project.git#commit-ish",
  "name2" : "git://github.com/user/project.git#commit-ish"
}

También puedes probar esto, donde visionmedia/express es name/repo:

"dependencies" : {
   "express" : "visionmedia/express"
}

O (si existe el módulo de paquete npm):

"dependencies" : {
  "name": "*"
}

Tomado de NPM docs

 120
Author: leko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-11 00:07:46

Lo siguiente funcionó bien en todos los escenarios que necesitaba:

"dependencies": {
"GitRepo": "git+https://<token-from-github>:[email protected]/<user>/<GitRepo>.git"
}
 68
Author: vashishatashu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-25 09:27:05

Para aquellos de ustedes que vinieron aquí por directorios públicos, de los documentos de npm: https://docs.npmjs.com/files/package.json#git-urls-as-dependencies

URL de Git como Dependencias

Las url de Git pueden ser de la siguiente 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 etiqueta, sha o rama que pueda ser suministrada como argumento a git checkout. El valor predeterminado es master.

 50
Author: mummybot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-09 13:15:05

La respuesta aceptada funciona, pero no me gusta mucho la idea de pegar tokens seguros en el package.json

Lo he encontrado en otro lugar, simplemente ejecute este comando de una sola vez como se documenta en la página de manual de git-config.

git config --global url."https://${GITHUB_TOKEN}@github.com/".insteadOf [email protected]:

GITHUB_TOKEN puede configurarse como variable environmnet o pegarse directamente

Y luego instalo repositorios privados de github como: npm install user/repo --save


También funciona en Heroku, simplemente configure el comando git config ... anterior como heroku-prebuild script en package.json y configure GITHUB_TOKEN como Heroku variable de configuración.

 33
Author: Michal Moravcik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-03 08:49:14

Hay múltiples maneras de hacerlo como la gente señala, pero las versiones más cortas son:

// from master
"depName": "user/repo",

// specific branch
"depName": "user/repo#branch",

// specific commit
"depName": "user/repo#commit",

Por ejemplo

"dependencies" : {
  "hexo-renderer-marked": "amejiarosario/hexo-renderer-marked#patch-1",
  "hexo-renderer-marked": "amejiarosario/hexo-renderer-marked#2249507",
  "hexo-renderer-marked": "amejiarosario/hexo-renderer-marked",
}
 26
Author: Adrian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-02 22:52:16
"dependencies": {
  "some-package": "github:github_username/some-package"
}

O simplemente

"dependencies": {
  "some-package": "github_username/some-package"
}

Https://docs.npmjs.com/files/package.json#github-urls

 16
Author: Rayron Victor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-31 17:21:33

Dado que Git usa curl bajo el capó, puede usar ~/.netrc archivo con las credenciales. Para GitHub sería algo como esto:

machine github.com
  login <github username>
  password <password OR github access token>

Si elige usar access tokens, se puede generar desde:

Configuración -> Configuración del desarrollador - > Tokens de acceso personal

Esto también debería funcionar si estás usando Github Enterprise en tu propia corporación. solo tienes que poner la url de github de tu empresa en el campo machine.

 2
Author: Leon li,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-10 15:35:01

Para mi referencia de repositorio privado no quería incluir un token seguro, y ninguno de los otros simples (es decir, especificar solo en el paquete.json) funcionó. Esto es lo que funcionó:

  1. Fue a GitHub.com
  2. Navegado al Repositorio Privado
  3. Hizo clic en "Clonar o Descargar" y copió la URL (que no coincidía con los ejemplos anteriores)
  4. Añadido # commit-sha
  5. Se ejecutó npm install
 1
Author: The Coder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-27 23:17:24