Installer une dépendance avec Bower à partir de l'URL et spécifier la version

154

J'essaye d'installer une dépendance avec Bower en utilisant une URL. À partir de la documentation de Bower:

Bower propose plusieurs façons d'installer des packages:

    # Using the dependencies listed in the current directory's bower.json 
    bower install
    # Using a local or remote package 
    bower install <package>
    # Using a specific version of a package 
    bower install <package>#<version>
    # Using a different name and a specific version of a package 
    bower install <name>=<package>#<version> 

<package>peut être l'un des éléments suivants:

  • Un nom qui correspond à un paquet enregistré auprès de Bower, par exemple jquery.
  • Un point de terminaison Git distant, par exemple git://github.com/someone/some-package.git. Peut être public ou privé.
  • Un point de terminaison local, c'est-à-dire un dossier qui est un référentiel Git.
  • Un point de terminaison abrégé, par exemple someone/some-package (par défaut GitHub).
  • Une URL vers un fichier, y compris les fichiers zip et tar. Son contenu sera extrait.

Cependant, alors il dit, que tous les types sauf l'URL permettent de spécifier une version.

Comment spécifier une version pour une dépendance URL téléchargée?

Edmondo1984
la source

Réponses:

194

Utilisez un point de terminaison git au lieu d'un nom de package:

bower install https://github.com/jquery/jquery.git#2.0.3
Sindre Sorhus
la source
8
Ceci est un point de terminaison Git, et la spécification des travaux de gestion des versions. Si vous spécifiez par exemple un fichier Javascript directement, cela ne fonctionne pas
Edmondo1984
1
Les URL sont autorisées avec les versions récentes de bower.
lfender6445
BTW: fonctionne svnaussi avec , par exemplebower install crypto-js=svn+http://crypto-js.googlecode.com/svn/#~3.1.2 --save
Preexo
5
si vous rencontrez une erreur ENORESTARGET URL sources can't resolve targetslors de la tentative d'installation à partir de git avec un committish, vous devez passer https://github.com/jquery/jqueryà https://github.com/jquery/jquery.git(add .git)
jakub.g
2
Est-ce que bower normalise la balise de version pour la préfixer avec un v? Quand je le fais, bower install https://github.com/my/repo.git#1.0.0cela fonctionne même si le tag réel que j'ai poussé a été appelé v1.0.0.
spinningarrow
54

Si vous utilisez le fichier bower.json pour spécifier vos dépendances:

{
     "dependencies": {
         ...
         "photo-swipe": "[email protected]:dimsemenov/PhotoSwipe.git#v3.0.x",

#bower 1.4 (tested with that version) can read repositorios with uri format

         "photo-swipe": "git://github.com/dimsemenov/PhotoSwipe.git#v3.0.x",

     }
}

N'oubliez pas que bower recherche également les versions et les balises publiées afin que vous puissiez pointer vers presque tout et interpréter les modèles de requête de base comme l'exemple précédent. qui récupérera la dernière mise à jour mineure de la version 3.0 (testée à partir de bower 1.3.5)

Mise à jour , comme la description de la question le mentionne également en utilisant uniquement une URL et aucune mention d'un référentiel github.

Un autre exemple consiste à exécuter cette commande en utilisant l'url souhaitée, comme:

bower install gmap3MarkerWithLabel=http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.0/src/markerwithlabel.js -S

cette commande télécharge votre bibliothèque js place {votre chemin de destination} /gmap3MarkerWithLabel/index.js et crée automatiquement une entrée dans votre fichier bower.json appelée gmap3MarkerWithLabel: "..." Après cela, vous ne pouvez exécuter que bower update gmap3MarkerWithLabelsi nécessaire.

Chose amusante si vous effectuez le processus backwars (ajoutez manuellement l'entrée dans bower.json, un nom d'entrée d'installation puis bower) cela ne fonctionne pas, vous obtenez un

bower ENOTFOUND Package gmapV3MarkerWithLabel introuvable

le0diaz
la source
++ Mise en garde RE sur le fait de faire le processus à l'envers
Jacob
À partir de 2018. Les gens devraient s'éloigner de bower, ne plus être en développement, et utiliser tout autre outil de gestion de paquets comme Yarn. Nous avons eu des problèmes car de nombreux développeurs de bibliothèques tierces ont arrêté de publier des packages bower pour aller avec une meilleure méthode standardisée. Le fil est bien plus rapide que le bower et très facile à migrer.
le0diaz
21

Cibler un commit spécifique

À distance (github)

Lorsque vous utilisez github, notez que vous pouvez également cibler un commit spécifique (par exemple, d'un fork que vous avez créé et mis à jour) en ajoutant son hachage de commit à la fin de son URL de clone. Par exemple:

"dependencies": {
  "example": "https://github.com/owner_name/repo_name.git#9203e6166b343d7d8b3bb638775b41fe5de3524c"
}

Localement (système de fichiers)

Ou vous pouvez cibler un commit git dans votre système de fichiers local si vous utilisez le répertoire .git de votre projet, comme ceci (sous Windows; notez les barres obliques):

"dependencies": {
  "example": "file://C:/Projects/my-project/.git#9203e6166b343d7d8b3bb638775b41fe5de3524c"
}

C'est une façon de tester le code de bibliothèque que vous avez validé localement mais pas encore poussé vers le référentiel.

JcT
la source
1
Merci! J'utilisais un composant bower fourchu avec un correctif, et il a continué à installer le dernier en fonction du fichier bower principal pour ce repo. L'ajout du hachage de validation m'a permis de télécharger ma version la plus récente.
elliottregan
9

Juste une mise à jour.

Maintenant, s'il s'agit d'un dépôt github, l'utilisation d'un simple raccourci github suffit si la version ne vous dérange pas bien sûr.

Raccourci GitHub

$ bower install desandro/masonry
Turdaliev Nursultan
la source
7

Voici un moyen pratique d'installer une balise ou un commit spécifique à partir de GitHub via bower.json.

{
  "dependencies": {
    "your-library-name": "<GITHUB-USERNAME>/<REPOSITORY-NAME>#<TAG-OR-COMMIT>"
  }
}

Par exemple:

{
  "dependencies": {
    "custom-jquery": "jquery/jquery#2.0.3"
  }
}
F Lekschas
la source
Par simple curiosité, est-il possible de cibler un répertoire spécifique à partir du référentiel? [email protected]#v0.1.0/directory?
Rhys
7

Spécifier simplement le point de terminaison uri a fonctionné pour moi , bower 1.3.9

  "dependencies": {
    "jquery.cookie": "latest",
    "everestjs": "http://www.everestjs.net/static/st.v2.js"
  }

En cours d'exécution bower install, j'ai reçu la sortie suivante:

bower new           version for http://www.everestjs.net/static/st.v2.js#*
bower resolve       http://www.everestjs.net/static/st.v2.js#*
bower download      http://www.everestjs.net/static/st.v2.js

Vous pouvez également essayer de mettre à jour le bower

  • npm update -g bower

Selon la documentation : les types d'urls suivants sont pris en charge:

http://example.com/script.js
http://example.com/style.css
http://example.com/package.zip (contents will be extracted)
http://example.com/package.tar (contents will be extracted)
lfender6445
la source
3

Je pense que la spécification de la version ne fonctionne que pour les points de terminaison git. Et pas pour les dossiers / zip. Comme lorsque vous pointez bower vers un fichier / dossier / zip js, vous avez déjà spécifié le package et la version (sauf pour js en effet). Parce qu'un paquet contient bower.json avec la version. Spécifier une version dans 'bower install' a du sens lorsque vous pointez bower vers un référentiel qui peut avoir plusieurs versions d'un paquet. Ça ne peut être que con je pense.

Pie-grièche
la source
3

Essayez bower install git://github.com/urin/jquery.balloon.js.git#1.0.3 --save1.0.3est le numéro de balise que vous pouvez obtenir en lisant la balise sous les versions. Également pour URL, remplacez par git://pour que le système se connecte.

SACn
la source
0

Installe le package de git et l'enregistre dans votre bloc de dépendances bower.json.

  1. bower register package-name git-endpoint#version
  2. install package-name --save

( --saveenregistrera la version du nom du package dans le fichier bower.json à l'intérieur du bloc de dépendance).

Référence

Shafeeq Diaz
la source