我的composer.json包下了这个包:
"symfony/asset": "*",
"symfony/console": "*",
"symfony/expression-language": "*",
"symfony/flex": "^1.1", // ther's no warning here
"symfony/form": "*",
"symfony/framework-bundle": "*",
"symfony/orm-pack": "*",
"symfony/process": "*",
"symfony/security-bundle": "*",
"symfony/serializer-pack": "*",
"symfony/translation": "*",
"symfony/twig-bundle": "*",
"symfony/validator": "*",
"symfony/web-link": "*",
"symfony/yaml": "*",
不幸的是,在尝试通过 composer validate
验证作曲家依赖关系后,我收到此警告:
应避免使用未绑定的版本约束(*) . 版本约束没有上限 - 这不是一个好主意 .
我发现了为什么在官方文件https://getcomposer.org/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md之下的存在但我不知道如何解决这个问题 .
任何想法如何通过一些有用的 composer
命令行自动(或手动) "*"
更新到当前安装的版本 .
(定义约束的上限) .
3 回答
没有像
composer set-version symfony/* 4.2
这样的作曲家命令You need to do this manually.
*.json
文件中的"find and replace""*"
→"^4.2"
如何为您服务?我假设你'd like to use the newest Symfony version - 4.2 at the time being. If you'喜欢使用已安装的,只需运行:
composer show symfony/asset
来查找版本 .顺便说一句,别担心 . 你只需要做一次〜2年:)
您可以使用以下命令将其更新到最新版本
但是会建议使用特定于版本的软件包而不是“*”,以避免与将来的软件包发生冲突
您可能缺少
composer.json
中的extra
部分,该部分定义了用于依赖项的Symfony版本 . 他们将其更改为4.x以使每个包都不使用版本约束,因此更容易将整个框架更新到另一个版本,但同时将所有Symfony组件保留在同一版本上 .尝试将此添加到
composer.json
文件并运行composer update
:编辑:对不起,忽略了你正在使用
composer validate
. 显然,这并未考虑extra
定义,这实际上只是Flex Composer插件的一个提示,因此Composer本身无法识别它 .