composer: Jak znaleźć dokładną wersję pakietu?

105

Załóżmy, że piszę bibliotekę A, która zależy od innej biblioteki, na przykład monologu.

Chcę zainstalować najnowszą wersję monologu, więc umieściłem to w pliku composer.json:

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

Potem biegnę $ php composer.phar install.

Spodziewałem się, że wersja jest zainstalowana w pliku composer.lock, ale jej tam nie ma:

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

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

    ]
}

Potrzebuję wersji, ponieważ chcę powiązać moją bibliotekę z określonym zestawem wersji, np .: Jeśli znajdę wersję 1.3.5, w moim pliku composer.json chciałbym umieścić coś takiego:

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

Jakieś pomysły?

HappyDeveloper
źródło

Odpowiedzi:

174

Wiem, że to stare pytanie, ale ...

composer.phar show

Pokaże wszystkie aktualnie zainstalowane pakiety i informacje o ich wersji. (Było to widoczne we wcześniejszych wersjach Composera tylko w przypadku korzystania z wycofanej obecnie -iopcji).

Aby zobaczyć więcej szczegółów, podaj również nazwę pakietu:

composer.phar show monolog/monolog

To pokaże wiele rzeczy, w tym skrót MD5 zatwierdzenia, adres URL źródła, typ licencji itp.

Ross Deane
źródło
11
php composer.phar show -ai php composer.phar show package/namesą również pomocne.
biskup
1
W przypadku dev-masterpakietów jest to przydatne, ponieważ pokazuje również skrót zatwierdzenia. Musisz więc przejść do GitHub, znaleźć ten skrót zatwierdzenia, sprawdzić datę, a następnie znaleźć tag z najbliższą datą wcześniejszą, aby naprawdę dowiedzieć się, jakiej "wersji" używasz
andrewtweber
2
można go również znaleźć w pliku composer.lock.
Hafiz
42

Możesz użyć programu Composer w następujący sposób:

composer show package/name
Kévin Ferradj
źródło
14

Jeśli chcesz tylko uzyskać dane wyjściowe jako numer wersji pakietu, na przykład: 1.7.5 lub 1.x-dev lub dev-master .

Fragment konsoli Linuksa:

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

Technicznie rzecz biorąc, "dev-master" to dokładna wersja, której tam używałeś. Jest to gałąź rozwojowa, a więc najnowsza wersja.

Najlepszym miejscem do wyszukania dostępnych wersji pakietów kompozytora jest Packagist, ponieważ jest to miejsce, w którym kompozytor ładuje wersje podczas instalowania pakietów. Wersje monologów są wymienione na http://packagist.org/packages/monolog/monolog .

naderman
źródło
2

Możesz użyć show all, szczególnie gdy nie masz pliku package.json, pobierz dostępne pakiety z packagist.org:

composer show "monolog/monolog" --all

Możesz także określić wersje

composer show "monolog/monolog" 1.* --all
Mohsen
źródło