如何使用Composer安装特定版本的软件包?


Answers:



110

添加双引号以在版本号中使用插入号运算符。

composer require middlewares/whoops "^0.4"

3
我看不到可以将软件包名称版本作为两个单独的参数传递的时间点。
x-yuri

1
@ x-yuri将包名称和版本作为单独的参数传递给我,使用composer 1.5.1对我有效
bryonbean

从技术上说,这不是OP问题的“正确”答案,但这对大多数人来说可能更有用。
Rich Court

19

只需使用php composer.phar要求

例如 :

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

也可通过安装获得。

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


出于记录,添加自定义约束不适用于install-仅与require。如果希望切换到特定版本并检入composer.lock文件,可以,但是必须使用composer require,然后将更改还原为composer.json
mindplay.dk

版本作为单独的论点?那有空吗?
x-yuri

9

如@alucic所述,使用:

composer require vendor/package:version

或者您可以使用:

composer update vendor/package:version

您可能应该查看有关Stackosflow安装和Composer更新之间的区别的StackOverflow帖子

有关版本号的问题,您可以查看有关版本的Composer文档,但总之在这里:

  • 波形版本范围()-〜1.2.3等于> = 1.2.3 < 1.3.0
  • 脱字号版本范围(^)-^ 1.2.3等于> = 1.2.3 < 2.0.0

因此,使用Tilde,您将获得补丁程序的自动更新,但次要和主要版本将不会更新。但是,如果使用Caret,则将获得补丁程序和次要版本,但不会获得主版本(重大更改)。

Tilde版本被认为是“更安全”的方法,但是,如果您使用可靠的依赖项(维护良好的库),则Caret版本不会有任何问题(因为较小的更改不应破坏更改)。



0

在您的中composer.json,您可以输入:

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

然后从composer installcomposer update从包含的目录运行composer.json。有时候,对我来说,作曲是hinky,所以我会开始composer clear-cache; rm -rf vendor; rm composer.lock之前composer install,以确保它变得新鲜的东西。


当然,正如其他答案指出的那样,您可以从终端运行以下命令:

composer require vendor/package:version

和版本:
- 作曲家的官方版本的文章
- Ecosia搜索

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.