symfony - 解压 symfony/symfony
问题描述
我开始从事一个用 Symfony 编写的 2.8 版本的大型项目。将整个项目升级到 SF 3 需要数百个小时,而且现在还不可能。我想出了一个想法,将包解压缩为它替换的symfony/symfony
单个包(键入)。它将解锁所有被锁定的 45 个包,并允许我们在可能的情况下逐步升级任何包。replace
composer.json
self.version
示例:我已经doctrine/orm
锁定2.5.*
并且无法升级到2.6
(什么会消除一些错误并允许我升级 PHP 7.2
--> 7.3
),因为我已经symfony/console
锁定symfony/symfony
在 version2.8
和doctrine/orm:2.6
requires symfony/console:~3.0.0
。但是,我的项目甚至允许symfony/console
在版本中使用^3.2
,因此您可以看到我的观点。
我想问你在尝试解包时是否对应用程序有任何危险symfony/symfony
?到目前为止,我什么都看不到。
PS Info 对于那些想要回答“只需要一个更高版本的包”的人。从 Composer 1.7.3 开始,这是不可能的,并且会触发版本冲突。
解决方案
在这种情况下,最好走一小步,仔细检查每一步的结果。当然,如果整个项目都被测试覆盖,那么做这样的改变会简单得多,但我不知道是不是这样。
我可能会做这样的事情:
- 复制
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
允许您检查包依赖关系的命令,以便您更好地了解哪些包会因更改某些特定包的版本而受到影响。
祝你好运,因为仔细升级可能需要相当长的时间。
推荐阅读
- python - 在python中单击按钮时更改变量的值
- css - 如何让动画从中心展开?
- ruby - 不确定为什么Ruby中的while循环会改变参数
- sqlite - Sqlite FTS 最小令牌大小
- jquery - 升级 jquery 时无法读取未定义的属性“ownerDocument”
- javascript - 为什么我的 props 在我需要的时候不能在我的组件中使用?
- google-chrome - favicon.ico 404(未找到)
- javascript - 如何使用 Array.push 并返回推送的项目?
- php - Payment with ePay PHP API
- python - How does the pytest increment example code work to skip tests (pytest item and call objects?)