Komponist: Wie finde ich die genaue Version eines Pakets?

103

Angenommen, ich schreibe eine Bibliothek A, die von einer anderen Bibliothek abhängt, zum Beispiel Monolog.

Ich möchte die neueste Version von Monolog installieren, also habe ich dies einfach in composer.json eingefügt:

{
    "require": {
        "monolog/monolog": "*.*.*"
    }
}

Dann renne ich $ php composer.phar install.

Ich hatte erwartet, die installierte Version in composer.lock zu finden, aber sie ist nicht vorhanden:

{
    "hash": "d7bcc4fe544b4ef7561918a8fc6ce009",
    "packages": [
        {
            "package": "monolog/monolog",
            "version": "dev-master",
            "source-reference": "2eb0c0978d290a1c45346a1955188929cb4e5db7"
        }
    ],
    "packages-dev": null,
    "aliases": [

    ],
    "minimum-stability": "dev",
    "stability-flags": [

    ]
}

Ich benötige die Version, weil ich meine Bibliothek an einen bestimmten Satz von Versionen binden möchte, z. B.: Wenn ich feststelle, dass die Version 1.3.5 ist, möchte ich in meiner composer.json Folgendes einfügen:

    "require": {
        "monolog/monolog": "1.3.*"
    }

Irgendwelche Ideen?

HappyDeveloper
quelle

Antworten:

169

Ich weiß, dass es eine alte Frage ist, aber ...

composer.phar show

Zeigt alle aktuell installierten Pakete und deren Versionsinformationen an. (Dies wurde in früheren Versionen von Composer nur bei Verwendung der jetzt veralteten -iOption angezeigt .)

Um weitere Details anzuzeigen, geben Sie auch den Namen des Pakets an:

composer.phar show monolog/monolog

Das zeigt viele Dinge, einschließlich Commit-MD5-Hash, Quell-URL, Lizenztyp usw.

Ross Deane
quelle
11
php composer.phar show -aund php composer.phar show package/namesind auch beide hilfreich.
Bischof
1
Für dev-masterPakete ist dies nützlich, da auch der Commit-Hash angezeigt wird. Sie müssen also zu GitHub gehen, diesen Commit-Hash finden, das Datum überprüfen und dann das Tag mit dem nächstgelegenen Datum davor finden, um wirklich herauszufinden, welche "Version" Sie verwenden
andrewtweber
2
Es kann auch in der Datei composer.lock gefunden werden.
Hafiz
41

Sie können die Composer-Show folgendermaßen verwenden:

composer show package/name
Kévin Ferradj
quelle
13

Wenn Sie nur daran interessiert sind, die Ausgabe als Versionsnummer des Pakets zu erhalten, wie: 1.7.5 oder 1.x-dev oder dev-master .

Linux-Konsolen-Snippet:

composer show 'monolog/monolog' | grep 'versions' | grep -o -E '\*\ .+' | cut -d' ' -f2 | cut -d',' -f1;
Jimmix
quelle
5

Technisch gesehen ist "dev-master" genau die Version, die Sie dort verwendet haben. Es ist der Entwicklungszweig und damit die neueste Version.

Der beste Ort, um nach verfügbaren Versionen für Composer-Pakete zu suchen, ist Packagist, da Composer hier die Versionen lädt, wenn Sie Pakete installieren. Die Monolog-Versionen sind unter http://packagist.org/packages/monolog/monolog aufgeführt .

Naderman
quelle
2

Sie können show all verwenden, insbesondere wenn Sie keine package.json-Datei haben. Erhalten Sie verfügbare Pakete von packagist.org:

composer show "monolog/monolog" --all

Sie können auch Versionen angeben

composer show "monolog/monolog" 1.* --all
Mohsen
quelle