composer: How to find the exact version of a package?

孤街醉人 提交于 2020-11-25 05:59:25

问题


Suppose I'm writing a library A, that depends on another library, monolog for instance.

I want to install the latest version of monolog, so I just put this inside composer.json:

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

Then I run $ php composer.phar install.

I was expecting to find the version installed, inside composer.lock, but it's not there:

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

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

    ]
}

I need the version because I want to tie my library to a specific set of versions, eg: If I find the version is 1.3.5, in my composer.json I would like to put something like this:

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

Any ideas?


回答1:


I know it's an old question, but...

composer.phar show

Will show all the currently installed packages and their version information. (This was shown in previous versions of Composer only when using the now-deprecated -i option.)

To see more details, specify the name of the package as well:

composer.phar show monolog/monolog

That will show many things, including commit MD5 hash, source URL, license type, etc.




回答2:


You can use composer show like this:

composer show package/name



回答3:


If you're just interested to get the output as the package version number like: 1.7.5 or 1.x-dev or dev-master.

Linux console snippet:

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



回答4:


Technically "dev-master" is the exact version that you ended up using there. It is the development branch, and thus the very latest version.

The best place to look for available versions for composer packages is Packagist since that's the place composer loads the versions from when you install packages. The monolog versions are listed on http://packagist.org/packages/monolog/monolog.




回答5:


You can use show all, specially when dont have package.json file, get available packages from packagist.org:

composer show "monolog/monolog" --all

Also you can specify versions

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


来源:https://stackoverflow.com/questions/10684523/composer-how-to-find-the-exact-version-of-a-package

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!