是否可以在架构中指定特定版本的 Composer



上下文:我正在与一个团队一起处理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 被旧版本更改。

相关内容

  • 没有找到相关文章

最新更新