gpt4 book ai didi

symfony - 解压 symfony/symfony

转载 作者:行者123 更新时间:2023-12-04 18:32:21 25 4
gpt4 key购买 nike

我开始从事一个用 Symfony 2.8 编写的大型项目。将整个项目升级到 SF 3 需要数百小时,现在还不可能。我想到了一个想法,将 symfony/symfony 包解压到它替换的单个包中(composer.json 中的键 replace)。它将解锁锁定在 self.version 上的所有 45 个包,并允许我们在可能的情况下逐步升级任何包。

示例:我将 doctrine/orm 锁定在 2.5.* 并且无法升级到 2.6(什么将消除一些错误,还允许我升级 PHP 7.2 --> 7.3) 因为我有 symfony/console 锁定>symfony/symfony 2.8doctrine/orm:2.6 需要 symfony/console:~3.0.0。然而,即使在 ^3.2 版本,我的项目也允许使用 symfony/console,所以你可以明白我的意思。

我想问一下,在尝试解压 symfony/symfony 时,应用程序是否存在任何危险?目前我还没有看到任何危险。 p>

附言那些想要回答“只需要一个更高版本的包”的人的信息。从 Composer 1.7.3 开始,这是不可能的,并且会触发版本冲突。

最佳答案

在这种情况下,最好一步一步地走,并仔细检查每一步的结果。当然,如果您的整个项目都被测试覆盖,那么进行此类更改会简单得多,但我不知道是否如此。

我可能会做这样的事情:

  1. composer.json复制到单独的目录
  2. 通过运行 composer info 获取包的确切版本
  3. 查看 symfony/symfony 提供的包列表,例如通过调查 its own composer.json 或查看 its page在 Packagist 上。
  4. 将复制的 composer.json 中的 symfony/symfony 替换为与您当前拥有的版本相同的单独包。
  5. 运行 composer install 并将实际安装的包的结果集与为您的项目安装的包进行比较。最简单的方法是比较两个目录中 composer info 的输出。您还可以使用类似 composer info | awk -F ' ' '{print $1 ""$2}' | sort 获取已排序的包及其版本列表,以便于比较。
  6. 调整包列表和版本限制,直到您从 composer info 为实际项目和新的 composer.json 获得相同的结果。
  7. composer.json 复制回主项目。届时您将能够安装相同的供应商软件包,但能够分别控制它们。
  8. 继续调整包版本,但不要忘记一次应用最小的更改并分别测试(希望通过运行自动测试)每个更改。

我希望您知道 composer why 命令,该命令允许您检查包依赖性,以便您更好地了解哪些包会受到某些特定包版本更改的影响。

祝此任务顺利,因为仔细升级可能需要相当长的时间。

关于symfony - 解压 symfony/symfony,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56505962/

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