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

uttx8gqw  于 2022-11-28  发布在  PHP
关注(0)|答案(7)|浏览(300)

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

hiz5n14c

hiz5n14c1#

composer require vendor/package:version
例如:
composer require refinery29/test-util:0.10.2

jdgnovmf

jdgnovmf2#

添加双引号以在版本号中使用"^" caret operator

composer require middlewares/whoops "^0.4"
nfeuvbwi

nfeuvbwi3#

正如@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,则可以获得修补程序和次要版本,但不会获得主要(重大更改)版本。
Tilde Version被认为是一种“更安全”的方法,但如果您使用的是可靠的依赖项(维护良好的库),则使用Caret Version应该不会有任何问题(因为微小的更改不应该是破坏性的更改)。

vmjh9lq9

vmjh9lq94#

只使用php composer.phar需要
例如:

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

也可通过安装获得。
https://getcomposer.org/doc/03-cli.md#requirehttps://getcomposer.org/doc/03-cli.md#install

krugob8w

krugob8w5#

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

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

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

z31licg0

z31licg06#

在您的composer.json中,您可以放置:

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

然后从包含composer.json的目录中运行composer installcomposer update。有时候,对我来说,composer是不可靠的,所以我会在composer install之前运行composer clear-cache; rm -rf vendor; rm composer.lock,以确保它得到新鲜的内容。
当然,正如其他答案所指出的,您可以从终端运行以下命令:

composer require vendor/package:version

关于版本控制:

aelbi1ox

aelbi1ox7#

我试图要求一个开发分支从一个不同的存储库,而不是最新的版本,我有同样的问题,以上都不为我工作:(
过了一段时间,我在文档中看到,在dev分支的情况下,你需要在版本前加上一个'dev-'前缀,下面的代码工作得很好。

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

相关问题