web-dev-qa-db-fra.com

Comment installer directement un paquet npm depuis GitHub?

Essayer d'installer des modules à partir de github a pour résultat:

Erreur ENOENT sur package.json.

Facilement reproduit en utilisant express:

npm install https://github.com/visionmedia/express génère une erreur.

npm install express fonctionne.

Pourquoi ne puis-je pas installer à partir de github?

Voici la sortie de la console:

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
764
guy mograbi

Parce que https://github.com/visionmedia/express est l'URL d'une page Web et non d'un module npm. Utilisez cette saveur:

git+https://[email protected]/visionmedia/express.git

ou cette saveur si vous avez besoin de SSH:

git+ssh://[email protected]/visionmedia/express.git
1032
Peter Lyons

Vous pouvez aussi faire npm install visionmedia/express pour installer depuis Github

ou

npm install visionmedia/express#branch

Il existe également une assistance pour l’installation directe à partir de Gist, Bitbucket, Gitlab et de nombreux autres formats spécialisés. Regardez le npm installdocumentation pour tous.

601
user2487135

Si git n'est pas installé, nous pouvons essayer

npm install --save https://github.com/Amitesh/gulp-rev-all/tarball/master
136
Amitesh

Il y a aussi npm install https://github.com/{USER}/{REPO}/tarball/{BRANCH} pour utiliser une branche différente.

50
zakelfassi

Mise à jour septembre 2016

L'installation à partir de Vanilla https github https fonctionne désormais:

npm install https://github.com/fergiemcdowall/search-index.git

EDIT: il y a quelques utilisateurs qui ont fait remarquer que vous ne pouvez pas le faire pour tous les modules car vous lisez à partir d'un système de contrôle de code source, qui peut contenir du code non valide/non compilé/buggy. Donc, pour être clair (bien que cela doive aller de soi): étant donné que le code dans le référentiel est dans un état utilisable par npm, vous pouvez maintenant très bien installer directement à partir de github

42
Fergie

La réponse actuelle de Peter Lyons n’est pas pertinente pour les versions récentes du NMP. Par exemple, utiliser la même commande que celle qui a été critiquée dans cette réponse convient désormais.

$ npm install https://github.com/visionmedia/express

Si vous avez des problèmes persistants, cela pourrait être un problème avec le paquet que vous utilisiez.

34
Colin D

Les méthodes sont assez bien couvertes maintenant dans la documentation d'installation de npm ainsi que les nombreuses autres réponses ici.

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>]

Cependant, un élément notable qui a récemment changé est que npm a ajouté le script prepare pour remplacer le script prepublish. problème où les modules installés via git n’exécutaient pas le script prepublish et ne complétaient donc pas les étapes de construction qui se produisent lorsqu’un module est publié dans le registre npm. Voir https://github.com/npm/npm/issues/3055 .

Bien entendu, les auteurs du module devront mettre à jour leur package.json pour pouvoir utiliser la nouvelle directive prepare afin que cela fonctionne.

25
nextgentech

UPDATE vous pouvez maintenant faire: npm install git://github.com/foo/bar.git
ou dans package.json:

"dependencies": {
  "bar": "git://github.com/foo/bar.git"
}
18
Sagiv Ofek

La forme générale de la syntaxe est

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]

ce qui signifie pour votre cas ce sera

npm install git+ssh://[email protected]/visionmedia/express.git

À partir des documents npmjs:

npm install:

Installe le paquet à partir du fournisseur git hébergé, en le clonant avec git. Pour une URL distante complète git, seule cette URL sera essayée.

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish>

| #semver:] est l'un des fichiers suivants: git, git + ssh, git + http, git + https ou git + fichier.

Si # est fourni, il sera utilisé pour cloner exactement ce commit. Si commit-ish a le format #semver :, peut être n'importe quelle plage ou version exacte valide, et npm recherchera toutes les balises ou références correspondant à cette plage dans le référentiel distant, de la même manière que pour une dépendance du registre. Si ni # ni

semver: est spécifié, puis master est utilisé.

Si le référentiel utilise des sous-modules, ceux-ci seront également clonés.

Si le paquet en cours d'installation contient un script de préparation, ses dépendances et devDependencies seront installés et le script de préparation sera exécuté avant que le paquet ne soit empaqueté et installé.

Les variables d'environnement git suivantes sont reconnues par npm et seront ajoutées à l'environnement lors de l'exécution de git:

  • GIT_ASKPASS
  • GIT_EXEC_PATH
  • GIT_PROXY_COMMAND
  • GIT_SSH
  • GIT_SSH_COMMAND
  • GIT_SSL_CAINFO GIT_SSL_NO_VERIFY

Voir la page de manuel de git pour plus de détails.

Exemples:

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
17
ishandutta2007

Installez-le directement:

npm install visionmedia/express

Vous pouvez également ajouter "express": "github:visionmedia/express" à la section "dependencies" du fichier package.json, puis exécuter:

npm install
14
Tyler Long

Tu pourrais aussi faire

npm i alex-cory/fasthacks

ou

npm i github:alex-cory/fasthacks

Fondamentalement:

npm i user_or_org/repo_name
9
Alex Cory

Vous pouvez directement installer un repo github à l'aide de la commande npm install, comme ceci: npm install https://github.com/futurechallenger/npm_git_install.git --save

NOTE: Dans le dépôt qui sera installé avec la commande npm:

  1. vous devez peut-être avoir un dossier dist dans votre dépôt, selon le commentaire de @Dan Dascalescu.
  2. Vous devez absolument avoir un package.json dans votre dépôt! que j'oublie d'ajouter.
6
Bruce Lee

Facile :

npm install *GithubUrl*.git --save

exemple :

npm install https://github.com/visionmedia/express.git --save
4
Khurshid Ansari