上下文:我正在与一个团队一起处理PHP项目,我们刚刚遇到了一个问题,即另一个团队成员的代码审查修改了composer.lock
文件中所有time
字段的格式。事实证明,他使用的是旧版本的作曲家,该作曲家以不同的格式输出time
字段。一旦他更新了重新安装的软件包,字段保持不变。
有没有办法指定 Composer 的最低版本,以要求所有处理项目的团队成员使用最低版本以避免此类问题。如果我们没有发现这个问题,那么每当具有不同作曲家版本的人安装新软件包时,composer.lock
文件都会发生这种不必要的更改
您可以创建将在每次更新之前调用的脚本,如果作曲家版本太旧,则引发异常。
在composer.json
:
"scripts": {
"pre-update-cmd": [
"ComposerVersionCheck::check"
]
}
用于版本检查的简单类:
class ComposerVersionCheck {
public static function check() {
if (version_compare(ComposerComposer::VERSION, '1.7.0', '<')) {
throw new Exception(
'Your Composer version (' . ComposerComposer::VERSION . ') is too old,'
. ' 1.7.0 or higher is required.'
);
}
}
}
有两种可能性:
composer.phar
签入以确保每个人都使用相同的composer
版本- 通过运行
composer self-update
,始终保持composer
本身的更新,以确保每个人都在使用最新版本的composer
无论如何,由于composer
随着时间的推移而变化,您可能仍然会遇到相同的问题。
你可以在 composer.json 中执行此操作:
"require": {
"composer": "^2.2",
[...]
}
注意:这将防止composer update
if <2.2,但不能composer install
,因此它不会确保 Composer 在部署服务器和团队计算机中是最新的,但它会阻止 composer.lock 被旧版本更改。