有没有办法限制“作曲家更新”仅在补丁级别更新包,尽管我在包定义中包含了次要版本。
喜欢:
composer --level=patch update
与composer.json:
"require": {
"craftcms/cms": "4.*"
}
原因:我们的 IT 规则要求外部顾问对新的次要版本进行安全检查,而不仅仅是补丁级别的更新。
我刚刚遇到了同样的问题,而且还没有找到一种本地方法来做到这一点。但是
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.";
}