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

gda*_*ras 264 php dependency-management composer-php

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

alu*_*cic 458

composer require vendor/package:version

例如:

composer require refinery29/test-util:0.10.2

  • 版本号中的功能^和〜是什么? (4认同)
  • 您可以在这里找到答案/sf/answers/1564206591/ (2认同)

Nko*_*yan 84

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

composer require middlewares/whoops "^0.4"
Run Code Online (Sandbox Code Playgroud)

  • 我看不到可以传递[软件包名称](https://github.com/composer/composer/blob/1.0.0/doc/03-cli.md#require)和[version]的时间点(https://github.com/composer/composer/blob/1.0.0/src/Composer/Command/RequireCommand.php#L41)作为两个单独的参数。 (2认同)
  • @x-yuri 将包名和版本作为单独的参数传递给我使用 composer 1.5.1 (2认同)
  • 虽然从技术上讲,这不是OP问题的“正确”答案,但这对大多数人来说可能更有用。 (2认同)

mil*_*vic 20

正如@alucic 提到的,使用:

composer require vendor/package:version
Run Code Online (Sandbox Code Playgroud)

或者你可以使用:

composer update vendor/package:version
Run Code Online (Sandbox Code Playgroud)

您可能应该查看这篇 StackOverflow 帖子,了解 composer install 和 composer update 之间的差异

关于版本号的问题,您可以查看Composer 文档上的版本,但简而言之:

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

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

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

  • `composer update供应商/包:版本`将不起作用。 (4认同)

小智 17

只需使用php composer.phar require

例如 :

php composer.phar require doctrine/mongodb-odm-bundle 3.0
Run Code Online (Sandbox Code Playgroud)

也可以安装.

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


小智 13

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

composer require "laravelcollective/html":"^5.8.0"
Run Code Online (Sandbox Code Playgroud)

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