last - ¿Cómo instalar un paquete npm desde GitHub directamente?
package json version (13)
Tratar de instalar módulos desde github resulta en:
Error ENOENT en package.json.
Se reproduce fácilmente utilizando Express:
npm install https://github.com/visionmedia/express
error.
npm install express
funciona.
¿Por qué no puedo instalar desde github?
Aquí está la salida de la consola:
npm http GET https://github.com/visionmedia/express.git
npm http 200 https://github.com/visionmedia/express.git
npm ERR! not a package /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/tmp.tgz
npm ERR! Error: ENOENT, open ''/home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json''
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <[email protected]>
npm ERR! System Linux 3.8.0-23-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install" "https://github.com/visionmedia/express.git"
npm ERR! cwd /home/guym/dev_env/projects_GIT/proj/somename
npm ERR! node -v v0.10.10
npm ERR! npm -v 1.2.25
npm ERR! path /home/guym/tmp/npm-32312/1373176518024-0.6586997057311237/package/package.json
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/guym/dev_env/projects_GIT/proj/somename/npm-debug.log
npm ERR! not ok code 0
ACTUALIZACIÓN septiembre 2016
La instalación desde la URL de github de vainilla https ahora parece funcionar:
npm install https://github.com/fergiemcdowall/search-index.git
EDITAR: hay un par de usuarios comentando que no puede hacer esto para todos los módulos porque está leyendo desde un sistema de control de origen, que bien puede contener código no válido / no compilado / con errores. Para que quede claro (aunque no debería ser dicho): dado que el código en el repositorio está en un estado de uso npm , ahora puede instalarlo directamente desde github.
Instálalo directamente:
npm install visionmedia/express
Alternativamente, puede agregar "express": "github:visionmedia/express"
a la sección de "dependencies"
del archivo package.json
, luego ejecute:
npm install
La forma general de la sintaxis es
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]
lo que significa para tu caso será
npm install git+ssh://[email protected]/visionmedia/express.git
De los documentos de npmjs:
npm instalar:
Instala el paquete desde el proveedor de git alojado, clonándolo con git. Para una url remota de git completa, solo se intentará esa URL.
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>
| #semver:] es uno de git, git + ssh, git + http, git + https, o git + file.
Si se proporciona #, se usará para clonar exactamente esa confirmación. Si commit-ish tiene el formato #semver :, puede ser cualquier rango semver válido o versión exacta, y npm buscará cualquier etiqueta o referencia que coincida con ese rango en el repositorio remoto, como lo haría para una dependencia de registro. Si ninguno # o
semver: se especifica, luego se utiliza master.
Si el repositorio utiliza submódulos, esos submódulos también se clonarán.
Si el paquete que se está instalando contiene una secuencia de comandos de preparación, se instalarán sus dependencias y devoluciones, y se ejecutará la secuencia de comandos de preparación, antes de que el paquete sea empaquetado e instalado.
Las siguientes variables de entorno git son reconocidas por npm y se agregarán al entorno cuando se ejecute git:
- GIT_ASKPASS
- GIT_EXEC_PATH
- GIT_PROXY_COMMAND
- GIT_SSH
- GIT_SSH_COMMAND
- GIT_SSL_CAINFO GIT_SSL_NO_VERIFY
Vea la página del manual de git para más detalles.
Ejemplos:
npm install git+ssh://[email protected]:npm/npm.git#v1.0.27 npm install git+ssh://[email protected]:npm/npm#semver:^5.0 npm install git+https://[email protected]/npm/npm.git npm install git://github.com/npm/npm.git#v1.0.27 GIT_SSH_COMMAND=''ssh -i ~/.ssh/custom_ident'' npm install git+ssh://[email protected]:npm/npm.git npm install
La respuesta principal actual de Peter Lyons no es relevante con las versiones recientes de NPM. Por ejemplo, ahora está bien usar el mismo comando que se criticó en esta respuesta.
$ npm install https://github.com/visionmedia/express
Si tiene problemas continuos, puede ser un problema con cualquier paquete que esté usando.
Los métodos se cubren bastante bien ahora en documentation así como en las muchas otras respuestas aquí.
npm install git+ssh://[email protected]:<githubname>/<githubrepo.git[#<commit-ish>]
npm install git+ssh://[email protected]:<githubname>/<githubrepo.git>[#semver:^x.x]
npm install git+https://[email protected]/<githubname>/<githubrepo.git>
npm install git://github.com/<githubname>/<githubrepo.git>
npm install github:<githubname>/<githubrepo>[#<commit-ish>]
Sin embargo, algo notable que ha cambiado recientemente es npm que agrega el script de prepare
para reemplazar el script de prepublish
. Esto soluciona un problema de larga data donde los módulos instalados a través de git no ejecutaron el script de publicación previa y, por lo tanto, no completaron los pasos de compilación que se producen cuando se publica un módulo en el registro npm. Consulte https://github.com/npm/npm/issues/3055 .
Por supuesto, los autores del módulo deberán actualizar su package.json para usar la nueva directiva de prepare
para que esto comience a funcionar.
Porque https://github.com/visionmedia/express
es la URL de una página web y no un módulo npm. Utilice este sabor:
git+https://[email protected]/visionmedia/express.git
o este sabor si necesitas SSH:
git+ssh://[email protected]/visionmedia/express.git
Prueba este comando
npm install github:[Organisation]/[Repository]#[master/BranchName] -g
Este comando funcionó para mí.
npm install github:BlessCSS/bless#3.x -g
Puede instalar directamente un comando github repo por npm install
, así: npm install https://github.com/futurechallenger/npm_git_install.git --save
NOTA: En el repositorio que se instalará mediante el comando npm:
- quizás tengas que tener una carpeta dist en tu repositorio, según el comentario de @Dan Dascalescu.
- Definitivamente tienes que tener un package.json en tu repositorio! que olvido añadir.
Si git no está instalado, podemos intentarlo.
npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master
También está npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH}
para usar una rama diferente.
También puede hacer npm install visionmedia/express
para instalar desde Github
o
npm install visionmedia/express#branch
También hay soporte para la instalación directamente desde Gist, Bitbucket, Gitlab y varios otros formatos especializados. Mira la documentation npm install
para todos ellos.
Tambien podrias hacer
npm i alex-cory/fasthacks
o
npm i github:alex-cory/fasthacks
Básicamente:
npm i user_or_org/repo_name
ACTUALIZAR ahora que puede hacer: npm install git://github.com/foo/bar.git
o en package.json
:
"dependencies": {
"bar": "git://github.com/foo/bar.git"
}