首页 文章

composer warning:版本约束没有上限

提问于
浏览
1

我的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 回答

  • 2

    任何想法如何通过一些有用的composer命令行自动(或手动)将“*”更新到当前安装的版本 .

    没有像 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年:)

  • 1

    您可以使用以下命令将其更新到最新版本

    composer update
    

    但是会建议使用特定于版本的软件包而不是“*”,以避免与将来的软件包发生冲突

  • -1

    您可能缺少 composer.json 中的 extra 部分,该部分定义了用于依赖项的Symfony版本 . 他们将其更改为4.x以使每个包都不使用版本约束,因此更容易将整个框架更新到另一个版本,但同时将所有Symfony组件保留在同一版本上 .

    尝试将此添加到 composer.json 文件并运行 composer update

    "extra": {
        "symfony": {
            "require": "^4.2"
        }
    }
    

    编辑:对不起,忽略了你正在使用 composer validate . 显然,这并未考虑 extra 定义,这实际上只是Flex Composer插件的一个提示,因此Composer本身无法识别它 .

相关问题