How to install a specific version of package using Composer?

前端 未结 6 941
野趣味
野趣味 2020-11-28 01:05

I am trying to install a specific version of a package using Composer. I tried composer install and composer require but they are installing the la

相关标签:
6条回答
  • 2020-11-28 01:16

    Suppose you want to install Laravel Collective. It's currently at version 6.x but you want version 5.8. You can run the following command:

    composer require "laravelcollective/html":"^5.8.0"
    

    A good example is shown here in the documentation: https://laravelcollective.com/docs/5.5/html

    0 讨论(0)
  • 2020-11-28 01:20

    just use php composer.phar require

    For example :

    php composer.phar require doctrine/mongodb-odm-bundle 3.0
    

    Also available with install.

    https://getcomposer.org/doc/03-cli.md#require https://getcomposer.org/doc/03-cli.md#install

    0 讨论(0)
  • 2020-11-28 01:30

    Add double quotes to use caret operator in version number.

    composer require middlewares/whoops "^0.4"
    
    0 讨论(0)
  • 2020-11-28 01:36

    composer require vendor/package:version

    for example:

    composer require refinery29/test-util:0.10.2

    0 讨论(0)
  • 2020-11-28 01:36

    As @alucic mentioned, use:

    composer require vendor/package:version
    

    or you can use:

    composer update vendor/package:version
    

    You should probably review this StackOverflow post about differences between composer install and composer update.

    Related to question about version numbers, you can review Composer documentation on versions, but here in short:

    • Tilde Version Range (~) - ~1.2.3 is equivalent to >=1.2.3 <1.3.0
    • Caret Version Range (^) - ^1.2.3 is equivalent to >=1.2.3 <2.0.0

    So, with Tilde you will get automatic updates of patches but minor and major versions will not be updated. However, if you use Caret you will get patches and minor versions, but you will not get major (breaking changes) versions.

    Tilde Version is considered a "safer" approach, but if you are using reliable dependencies (well-maintained libraries) you should not have any problems with Caret Version (because minor changes should not be breaking changes.

    0 讨论(0)
  • 2020-11-28 01:38

    In your composer.json, you can put:

    {
        "require": {
            "vendor/package": "version"
        }
    }
    

    then run composer install or composer update from the directory containing composer.json. Sometimes, for me, composer is hinky, so I'll start with composer clear-cache; rm -rf vendor; rm composer.lock before composer install to make sure it's getting fresh stuff.


    Of course, as the other answers point out you can run the following from the terminal:

    composer require vendor/package:version
    

    And on versioning:
    - Composer's official versions article
    - Ecosia Search

    0 讨论(0)
提交回复
热议问题