首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解包symfony/symfony

解包symfony/symfony
EN

Stack Overflow用户
提问于 2019-06-08 11:32:50
回答 1查看 487关注 0票数 3

我开始从事一个用Symfony编写的大型项目,该项目的版本为2.8。将整个项目升级到SF3需要花费数百个小时,现在是不可能的。我想出了一个想法,将symfony/symfony包解压缩到它所取代的单个包(composer.json中的键replace )。它将解锁在self.version上的所有45个软件包,并允许我们在可能的情况下逐步升级任何软件包。

示例:--我的doctrine/orm锁定在2.5.*上,不能升级到2.6 (这将消除几个bug并允许我升级PHP7.2-> 7.3),因为在2.8doctrine/orm:2.6的版本中,symfony/symfony锁定了symfony/console >需要symfony/console:~3.0.0。但是,我的项目允许使用symfony/console,即使在^3.2版本下也是如此,这样您就可以了解我的观点了。

我想问您,在尝试解压缩symfony/symfony**?**时,应用程序是否存在任何危险?到目前为止,我看不到任何危险。

对于那些想要回答“只需要一个更高版本的软件包”的人来说,P.S.info。因为Composer 1.7.3,这是不可能的,并将触发版本冲突。

EN

回答 1

Stack Overflow用户

发布于 2019-06-08 18:42:34

在这种情况下,最好走一小步,仔细检查每一步的结果。当然,如果您的整个项目都包含在测试中,那么做这样的更改就会简单得多,但我不知道是否如此。

我可能会这样做:

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

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

祝您好运,因为仔细的升级可能需要相当长的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56505962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档