gpt4 book ai didi

dependencies - 尽管有静态版本号,但仍将 Composer 依赖项更新为最新版本?

转载 作者:行者123 更新时间:2023-12-03 15:50:41 26 4
gpt4 key购买 nike

如果我使用了静态版本号,是否可以通过一个命令将我的所有 Composer 依赖项更新到最新版本?我想保留静态版本号,但要更新它们。

谢谢,

最佳答案

Is it possible to update all my Composer dependencies to the latest versions via one command, if I have used static version numbers?



简而言之:不,没有命令可以自动提升到 composer.json 中给定静态版本的最新版本。 , 然而。

您得到的最近的是 composer outdated -D (root package),显示root包上过时的包列表,包括 package , current versionlatest version .下一步是手动将最新版本号传输到 composer.json 文件中。

如果您想使用 PHP 脚本自动执行此操作,那么以下几行应该可以帮助您入门。该脚本将所有版本号提升到最新,而不仅仅是静态版本号。这意味着,如果您只想提高静态数字,您可能需要为静态数字添加额外的检查。

该脚本需要运行 composer outdated --direct > outdated.txt在 CLI 上生成输入文件(或调整脚本以使用 exec/system/passthru/whatever 并直接处理返回的输出)。

!!小心并在独立的 composer.json 上进行测试或受版本控制的文件,您可以在其中轻松还原任何不需要的修改。
update-composer-json-version-numbers-to-latest-version.php或只是 uv.php :
<?php
/**
* Raise/update static version numbers in composer.json.
*
* Run on the CLI: "composer outdated --direct > outdated.txt"
*/
$composerJson = json_decode(file_get_contents('composer.json'), true);

$listOfOutdatedPackages = file('outdated.txt');

foreach($listOfOutdatedPackages as $line) {

$regexp = '/(?P<package>[\w]+\/[\w]+).*(?P<currentVersion>\d.\d.\d).*(?P<latestVersion>\d.\d.\d)/';
preg_match($regexp, $line, $matches);
$matches = array_filter($matches, 'is_string', ARRAY_FILTER_USE_KEY);

if(isset($matches['package']))
{
$package = $matches['package'];

if(isset($composerJson['require'][$package]))
{
$currentVersion = $composerJson['require'][$package];
echo sprintf('Updating %s from %s to %s', $package, $currentVersion, $matches['latestVersion']);
$composerJson['require'][$package] = $matches['latestVersion'];
}
if(isset($composerJson['require-dev'][$package]))
{
$currentVersion = $composerJson['require-dev'][$package];
echo sprintf('Updating %s from %s to %s', $package, $currentVersion, $matches['latestVersion']);
$composerJson['require-dev'][$package] = $matches['latestVersion'];
}
}
}

file_put_contents('composer.json', json_encode($composerJson, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));

现在有人使用 grep/awk/sed 发布了一个漂亮的单行...对吗? :)

关于dependencies - 尽管有静态版本号,但仍将 Composer 依赖项更新为最新版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41200946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com