kubawerlos / composer-require-better
该包已被废弃,不再维护。未建议替代包。
提供命令,用于需要具有补丁版本的包
v1.5.0
2022-04-02 09:14 UTC
Requires
- php: ^7.4 || ^8.0
- composer-plugin-api: ^2.0.0
Requires (Dev)
- composer/composer: ^2.0.0
- phpunit/phpunit: ^9.5.20
This package is auto-updated.
Last update: 2023-05-05 22:06:52 UTC
README
此存储库已废弃,请使用 composer bump
代替。
安装
composer global require kubawerlos/composer-require-better
使用
composer rb vendor/package
所有Composer的require选项(除了prefer-lowest
和prefer-stable
)都可以使用。
动机
假设我们想要为我们的项目安装包acme-corporation/adding-machine
,它发布了1.0.0
和1.0.1
版本。通常,我们会运行
composer require acme-corporation/adding-machine
我们将安装最新版本(1.0.1
),并将约束^1.0
添加到composer.json
中。该约束意味着所有版本从1.0.0
,但低于2.0.0
的版本都是允许的。
这可能在将来引起一些问题
- 如果我们想要安装另一个允许
acme-corporation/adding-machine
仅在版本1.0.0
(或与acme-corporation/adding-machine
版本1.0.1
冲突)的包,则会导致acme-corporation/adding-machine
降级到版本1.0.0
- 我们很容易错过这个降级(因为它将在控制台中的一行中) - 如果1.0.1
修复了对我们至关重要的错误怎么办? - 如果我们运行
composer update --prefer-lowest
(在开发库时相当常见的做法)我们最终会得到acme-corporation/adding-machine
在版本1.0.0
。 - 当有多个包和许多允许的版本时(例如,Symfony 3 LTS的当前版本为
3.4.38
,因此约束^3.4
允许39个版本 - 从3.4.0
到3.4.38
),运行composer update
命令可能需要很长时间。
因此,我们可以运行
composer rb acme-corporation/adding-machine
我们将安装最新版本 - 与require
命令相同,但添加到composer.json
中的约束将是^1.0.1
- 这意味着所有版本从1.0.0
,但低于2.0.0
的版本都是允许的。这会带来什么变化?
- 如果我们想要安装之前降级的
acme-corporation/adding-machine
的包,我们会看到错误并必须做出决定 - 这对我们来说是可接受的,还是我们不能允许它? - 运行
composer update --prefer-lowest
对已安装的包没有任何作用,因为现在安装的版本是约束允许的最低版本。 - 运行
composer update
命令将更快 - 提到的Symfony 3 LST约束将是^3.4.38
,因此它将允许单个版本,而不是39个版本。 - 在
composer.json
文件中,我们现在将已安装的版本作为约束条件,因此我们无需使用composer show
或在composer.lock
文件(如果我们甚至有它的话)中检查项目中使用了哪个版本。