composer : 패키지의 정확한 버전을 찾는 방법은 무엇입니까?


103

예를 들어 모노로그와 같은 다른 라이브러리에 의존하는 라이브러리 A를 작성한다고 가정 해 보겠습니다.

최신 버전의 모노로그를 설치하고 싶습니다. 그래서 이것을 composer.json 안에 넣었습니다.

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

그런 다음 실행 $ php composer.phar install합니다.

composer.lock 안에 설치된 버전을 찾을 것으로 예상했지만 거기에 없습니다.

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

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

    ]
}

내 라이브러리를 특정 버전 세트에 연결하고 싶기 때문에 버전이 필요합니다. 예 : 버전이 1.3.5 인 경우 composer.json에 다음과 같이 입력하고 싶습니다.

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

어떤 아이디어?

답변:


170

오래된 질문 인 건 알지만 ...

composer.phar show

현재 설치된 모든 패키지와 버전 정보를 표시합니다. (이것은 현재 사용되지 않는 -i옵션을 사용할 때만 이전 버전의 Composer에서 표시되었습니다 .)

자세한 내용을 보려면 패키지 이름도 지정하십시오.

composer.phar show monolog/monolog

커밋 MD5 해시, 소스 URL, 라이선스 유형 등을 포함한 많은 정보가 표시됩니다.


11
php composer.phar show -a그리고 php composer.phar show package/name또한 모두 도움이됩니다.
주교

1
들어 dev-master그것은 또한 해시를 커밋 보여주기 때문에 패키지,이 유용합니다. 따라서 GitHub로 이동하여 커밋 해시를 찾고, 날짜를 확인한 다음 그 이전에 가장 가까운 날짜의 태그를 찾아야합니다. 실제로 사용중인 "버전"을 알아 내야합니다.
andrewtweber

2
composer.lock 파일에서도 찾을 수 있습니다.
Hafiz


13

1.7.5 또는 1.x-dev 또는 dev-master 와 같은 패키지 버전 번호로 출력을 얻는 데 관심이 있다면 .

Linux 콘솔 스 니펫 :

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

5

기술적으로 "dev-master"는 거기서 사용하게 된 정확한 버전입니다. 개발 브랜치이므로 최신 버전입니다.

composer 패키지에 사용 가능한 버전을 찾는 가장 좋은 곳은 Packagist 입니다. 패키지를 설치할 때 composer가 버전을로드하기 때문입니다. 모노로그 버전은 http://packagist.org/packages/monolog/monolog에 나열되어 있습니다.


2

show all을 사용할 수 있습니다. 특히 package.json 파일이없는 경우 packagist.org에서 사용 가능한 패키지를 가져올 수 있습니다.

composer show "monolog/monolog" --all

또한 버전을 지정할 수 있습니다.

composer show "monolog/monolog" 1.* --all
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.