compositor: Como encontrar a versão exata de um pacote?

103

Suponha que eu esteja escrevendo uma biblioteca A, que depende de outra biblioteca, monólogo, por exemplo.

Quero instalar a versão mais recente do monolog, então coloco isso dentro de composer.json:

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

Então eu corro $ php composer.phar install.

Eu esperava encontrar a versão instalada, dentro de composer.lock, mas ela não está lá:

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

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

    ]
}

Preciso da versão porque quero vincular minha biblioteca a um conjunto específico de versões, por exemplo: Se eu achar que a versão é 1.3.5, em meu composer.json gostaria de colocar algo assim:

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

Alguma ideia?

HappyDeveloper
fonte

Respostas:

170

Eu sei que é uma pergunta antiga, mas ...

composer.phar show

Irá mostrar todos os pacotes atualmente instalados e suas informações de versão. (Isso era mostrado nas versões anteriores do Composer apenas ao usar o agora obsoleto-i opção .)

Para ver mais detalhes, especifique o nome do pacote também:

composer.phar show monolog/monolog

Isso mostrará muitas coisas, incluindo commit de hash MD5, URL de origem, tipo de licença, etc.

Ross Deane
fonte
11
php composer.phar show -ae php composer.phar show package/nametambém são úteis.
bispo
1
Para dev-masterpacotes, isso é útil, porque também mostra o hash de confirmação. Portanto, você precisa ir ao GitHub, encontrar aquele hash de commit, verificar a data e, em seguida, encontrar a tag com a data mais próxima antes disso, para realmente descobrir qual "versão" você está usando
andrewtweber
2
ele também pode ser encontrado no arquivo composer.lock.
Hafiz
41

Você pode usar o compositor show assim:

composer show package/name
Kévin Ferradj
fonte
13

Se você está interessado apenas em obter a saída como o número da versão do pacote, como: 1.7.5 ou 1.x-dev ou dev-master .

Snippet de console do Linux:

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

Tecnicamente, "dev-master" é a versão exata que você acabou usando lá. É o ramo de desenvolvimento e, portanto, a versão mais recente.

O melhor lugar para procurar versões disponíveis para pacotes do composer é o Packagist, pois é o lugar onde o composer carrega as versões quando você instala os pacotes. As versões do monolog estão listadas em http://packagist.org/packages/monolog/monolog .

naderman
fonte
2

Você pode usar show all, especialmente quando não tiver o arquivo package.json, obtenha os pacotes disponíveis em packagist.org:

composer show "monolog/monolog" --all

Além disso, você pode especificar versões

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