“作曲家更新”仅补丁级别

问题描述 投票:0回答:1

有没有办法限制“作曲家更新”仅在补丁级别更新包,尽管我在包定义中包含了次要版本。

喜欢:

composer --level=patch update

与composer.json:

"require": {
    "craftcms/cms": "4.*"
}
  • 会做:4.1.12 -> 4.1.13
  • 不会这样做:4.1.12 -> 4.2.1

原因:我们的 IT 规则要求外部顾问对新的次要版本进行安全检查,而不仅仅是补丁级别的更新。

composer-php
1个回答
0
投票

我刚刚遇到了同样的问题,而且还没有找到一种本地方法来做到这一点。但是

composer outdated
现在有
-p
-patch-only
选项。我希望有一天这也适用于
update
。您可以将其用于一个仅更新补丁版本的小脚本,例如:

#!/usr/bin/env php
<?php

$outputJsonStr = shell_exec('composer outdated -p --format=json');
$outputJson = json_decode($outputJsonStr, true, 512, JSON_THROW_ON_ERROR);

$updatePackages = [];

foreach ($outputJson['installed'] as $package) {
    if ($package['latest-status'] === 'semver-safe-update') {
        $updatePackages[] = $package['name'] . ':' . $package['latest'];
        echo $package['name'] . ':' . $package['version'] . ' -> ' . $package['latest'] . "\n";
    }
}

if (!empty($updatePackages)) {
    $packagesToStr = implode(' ', $updatePackages);
    echo "Updating packages: " . $packagesToStr . "\n";
    shell_exec('composer update ' . $packagesToStr);
} else {
    echo "No packages need to be updated.";
}
© www.soinside.com 2019 - 2024. All rights reserved.