ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在尝试使用 Composer 安装特定版本的软件包。我尝试了 composer installcomposer require,但他们正在安装最新版本的软件包。如果我想要旧版本怎么办?


a
alucic

composer require vendor/package:version

例如:

composer require refinery29/test-util:0.10.2


版本号中的函数 ^ 和 ~ 是什么?
您可以在这里找到答案stackoverflow.com/a/22345808/1522019
@DediAnanto 请从 npm 包中查看此链接类似的交互。 stackoverflow.com/questions/22343224/…
a
apaderno

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

composer require middlewares/whoops "^0.4"

我看不到您可以将 package nameversion 作为两个单独的参数传递的时间点。
@x-yuri 使用 composer 1.5.1 将包名称和版本作为单独的参数传递给我
虽然从技术上讲,这不是 OP 问题的“正确”答案,但这对大多数人来说可能更有用。
K
Kojo Nkrumah

正如@alucic 提到的,使用:

composer require vendor/package:version

或者您可以使用:

composer update vendor/package:version

您可能应该查看 this StackOverflow post about differences between composer install and composer update

有关版本号的问题,您可以查看 Composer documentation on versions,但简而言之:

波浪号版本范围 (~) - ~1.2.3 相当于 >=1.2.3 <1.3.0

插入符号版本范围 (^) - ^1.2.3 相当于 >=1.2.3 <2.0.0

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

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


composer update vendor/package:version 不起作用。
A
Aize

只需使用 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
版本作为单独的参数?那曾经可用吗?
J
Jay

假设你想安装 Laravel Collective。它目前是 6.x 版,但您想要 5.8 版。您可以运行以下命令:

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

文档中显示了一个很好的示例:https://laravelcollective.com/docs/5.5/html


请分享更多详细信息 - 版本约束 ^5.8.0 不会限制 Composer 使用特定版本,但仍允许安装多个版本
s
silver

我试图要求来自不同存储库而不是最新版本的开发分支,并且我遇到了同样的问题,并且上述问题都不适合我:(

过了一会儿,我在文档中看到,在开发分支的情况下,您需要在版本中添加“dev-”前缀,并且以下内容完美运行。

composer require [vendorName]/[packageName]:dev-[gitBranchName]

R
Reed

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

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

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

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

composer require vendor/package:version

关于版本控制:
- Composer's official versions article
- Ecosia Search