Installieren einer Abhängigkeit mit Bower von der URL und Angeben der Version

154

Ich versuche, eine Abhängigkeit mit Bower über eine URL zu installieren. Ab Bower-Dokumentation:

Bower bietet verschiedene Möglichkeiten, um Pakete zu installieren:

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

Wo <package>kann eine der folgenden sein:

  • Ein Name, der einem bei Bower registrierten Paket zugeordnet ist, z. B. jquery.
  • Ein entfernter Git-Endpunkt, z git://github.com/someone/some-package.git. Kann öffentlich oder privat sein.
  • Ein lokaler Endpunkt, dh ein Ordner, der ein Git-Repository ist.
  • Ein Kurzendendpunkt, z. B. someone/some-package (standardmäßig GitHub).
  • Eine URL zu einer Datei, einschließlich Zip- und Tar-Dateien. Sein Inhalt wird extrahiert.

Dann heißt es jedoch, dass alle Typen außer der URL die Angabe einer Version erlauben.

Wie gebe ich eine Version für eine URL-Download-Abhängigkeit an?

Edmondo1984
quelle

Antworten:

194

Verwenden Sie einen Git-Endpunkt anstelle eines Paketnamens:

bower install https://github.com/jquery/jquery.git#2.0.3
Sindre Sorhus
quelle
8
Dies ist ein Git-Endpunkt, und die Angabe der Versionierung funktioniert. Wenn Sie beispielsweise eine Javascript-Datei direkt angeben, funktioniert dies nicht
Edmondo1984
1
URLs sind mit aktuellen Versionen von bower zulässig.
lfender6445
Übrigens: funktioniert auch mit svn, zBbower install crypto-js=svn+http://crypto-js.googlecode.com/svn/#~3.1.2 --save
Preexo
5
Wenn Sie einen Fehler haben, ENORESTARGET URL sources can't resolve targetswenn Sie versuchen, von Git mit einem https://github.com/jquery/jqueryhttps://github.com/jquery/jquery.git.git
Committish zu
2
Normalisiert bower das Versions-Tag, um ihm ein vorangestellt zu haben v? Wenn ich das mache bower install https://github.com/my/repo.git#1.0.0, funktioniert es, obwohl das eigentliche Tag, das ich gepusht habe, aufgerufen wurde v1.0.0.
Spinningarrow
54

Wenn Sie die Datei bower.json verwenden, um Ihre Abhängigkeiten anzugeben:

{
     "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",

     }
}

Denken Sie daran, dass bower auch nach freigegebenen Versionen und Tags sucht, sodass Sie auf fast alles verweisen und grundlegende Abfragemuster wie im vorherigen Beispiel interpretieren können. Damit wird das neueste kleinere Update von Version 3.0 abgerufen (getestet von Bower 1.3.5).

Aktualisieren , da in der Fragenbeschreibung auch nur die Verwendung einer URL und keine Erwähnung eines Github-Repositorys erwähnt wird.

Ein weiteres Beispiel ist die Ausführung dieses Befehls mit der gewünschten URL:

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

Dieser Befehl lädt Ihre js-Bibliothek herunter, fügt {Ihren Zielpfad} /gmap3MarkerWithLabel/index.js ein und erstellt automatisch einen Eintrag in Ihrer Datei bower.json mit dem Namen gmap3MarkerWithLabel: "..." Danach können Sie nur noch ausführen bower update gmap3MarkerWithLabel bei Bedarf .

Lustige Sache, wenn Sie den Prozess backwars machen (fügen Sie manuell den Eintrag in bower.json hinzu, dann bower install entryName) es funktioniert nicht, Sie erhalten eine

Laube ENOTFOUND-Paket gmapV3MarkerWithLabel nicht gefunden

le0diaz
quelle
++ RE Vorbehalt über den Vorgang rückwärts
Jacob
Ab 2018. Die Leute sollten sich von der Laube entfernen, nicht mehr in der Entwicklung, und jedes andere Paketverwaltungstool wie Garn verwenden. Wir hatten Probleme, da viele Bibliotheksentwickler von Drittanbietern die Veröffentlichung von Bower-Paketen eingestellt haben, um einen einheitlicheren Weg zu finden. Garn ist viel schneller als Laube und sehr einfach zu migrieren.
Le0diaz
21

Targeting eines bestimmten Commits

Fernbedienung (Github)

Beachten Sie bei der Verwendung von github, dass Sie auch auf ein bestimmtes Commit (z. B. eines von Ihnen erstellten und aktualisierten Forks) abzielen können, indem Sie dessen Commit-Hash an das Ende seiner Klon-URL anhängen. Beispielsweise:

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

Lokal (Dateisystem)

Oder Sie können ein Git-Commit in Ihrem lokalen Dateisystem als Ziel festlegen, wenn Sie das .git-Verzeichnis Ihres Projekts wie folgt verwenden (unter Windows; beachten Sie die Schrägstriche):

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

Dies ist eine Möglichkeit, Bibliothekscode zu testen, den Sie lokal festgeschrieben, aber noch nicht auf das Repo übertragen haben.

JcT
quelle
1
Vielen Dank! Ich habe eine gegabelte Bower-Komponente mit einem Patch verwendet, und sie hat die neueste Version gemäß der Haupt-Bower-Datei für dieses Repo installiert. Durch Hinzufügen des Commit-Hash konnte ich meine neueste Version herunterladen.
elliottregan
9

Nur ein Update.

Wenn es sich um ein Github-Repository handelt, reicht es aus, nur eine Github-Kurzschrift zu verwenden, wenn Ihnen die Version natürlich nichts ausmacht.

GitHub Kurzschrift

$ bower install desandro/masonry
Turdaliev Nursultan
quelle
7

Hier ist eine praktische Kurzform, um ein bestimmtes Tag oder Commit von GitHub über zu installieren bower.json.

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

Beispielsweise:

{
  "dependencies": {
    "custom-jquery": "jquery/jquery#2.0.3"
  }
}
F Lekschas
quelle
Ist es aus Neugier möglich, ein bestimmtes Verzeichnis aus dem Repository anzuvisieren? [email protected]#v0.1.0/directory?
Rhys
7

Nur die Angabe des Uri-Endpunkts hat bei mir funktioniert , Laube 1.3.9

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

Beim Laufen bower installerhielt ich folgende Ausgabe:

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

Sie können auch versuchen, die Laube zu aktualisieren

  • npm update -g bower

Laut Dokumentation werden folgende URL-Typen unterstützt:

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
quelle
3

Ich glaube, dass die Angabe der Version nur für Git-Endpunkte funktioniert. Und nicht für Ordner / Zip. Wie wenn Sie bower auf eine js-Datei / einen Ordner / eine Zip-Datei verweisen, haben Sie bereits Paket und Version angegeben (mit Ausnahme von js). Weil ein Paket bower.json mit einer Version enthält. Die Angabe einer Version in 'bower install' ist sinnvoll, wenn Sie bower auf ein Repository verweisen, das viele Versionen eines Pakets enthalten kann. Es kann nur Schwachsinn sein, denke ich.

Würger
quelle
3

Versuchen Sie, bower install git://github.com/urin/jquery.balloon.js.git#1.0.3 --savewo 1.0.3sich die Tag-Nummer befindet, die Sie erhalten, wenn Sie das Tag unter Releases lesen. Auch für URL ersetzen durch git://, damit das System eine Verbindung herstellen kann.

SACn
quelle
0

Installiert das Paket von git und speichert es in Ihrem Abhängigkeitsblock bower.json.

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

(--save speichert die Paketnamenversion in der Datei bower.json im Abhängigkeitsblock).

Referenz

Shafeeq Diaz
quelle