我开始从事一个用Symfony编写的大型项目,该项目的版本为2.8。将整个项目升级到SF3需要花费数百个小时,现在是不可能的。我想出了一个想法,将symfony/symfony包解压缩到它所取代的单个包(composer.json中的键replace )。它将解锁在self.version上的所有45个软件包,并允许我们在可能的情况下逐步升级任何软件包。
示例:--我的doctrine/orm锁定在2.5.*上,不能升级到2.6 (这将消除几个bug并允许我升级PHP7.2-> 7.3),因为在2.8和doctrine/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,这是不可能的,并将触发版本冲突。
发布于 2019-06-08 18:42:34
在这种情况下,最好走一小步,仔细检查每一步的结果。当然,如果您的整个项目都包含在测试中,那么做这样的更改就会简单得多,但我不知道是否如此。
我可能会这样做:
composer.json复制到单独的目录中composer info获得包的确切版本symfony/symfony提供的包列表,例如查看它自己 composer.json或查看Packagist上的它的页面。symfony/symfony中的composer.json替换为与当前版本相同的单个包。composer install并比较实际安装的软件包集和为您的项目安装的包。最简单的方法是比较两个目录的composer info输出。您还可以使用像composer info | awk -F ' ' '{print $1 " " $2}' | sort这样的工具来获得包及其版本的排序列表,这样比较起来就更容易了。composer info获得实际项目和新composer.json的相同结果为止。composer.json复制回主项目。此时,您将能够安装相同的供应商包,但将能够单独控制它们。我希望您了解composer why命令,该命令允许您检查包依赖关系,以便更好地了解哪些包将因某些特定包的版本更改而受到影响。
祝您好运,因为仔细的升级可能需要相当长的时间。
https://stackoverflow.com/questions/56505962
复制相似问题