【问题标题】:Can I override a composer.json dependency to remove it?我可以覆盖 composer.json 依赖项来删除它吗?
【发布时间】:2019-02-22 17:48:00
【问题描述】:

我知道可以使用以下方法覆盖作曲家依赖项:

"some/module": "1.0.0 as 2.0.0",

但是是否可以完全删除我的依赖项之一所需的依赖项?

问题是我需要"cwp/cwp-recipe-basic": "1.1.0",,可以找到here。该包只是另一个依赖项列表,但是我不想要其中一个依赖项。

有没有办法告诉作曲家忽略那个依赖项?

例如

"cwp/cwp-recipe-basic": "1.1.0",
"silverstripe/fulltextsearch": " as 1.1.0"

【问题讨论】:

    标签: composer-php silverstripe cwp


    【解决方案1】:

    我猜你不能。但是,如果它只是一个依赖项列表,为什么不直接复制列表,除了不需要的列表并将它们粘贴到您的 composer.json 中?

    另一种方法可能是 fork cwp/cwp-recipe-basic 的列表很长,并从该列表中删除您不需要的依赖项,然后在项目中要求 fork。

    【讨论】:

    • 然后我必须管理所有这些依赖版本,而不是通过仅更新 cwp-recipe-basic 包来获取最新的建议版本。
    • 问题是 composer 并没有考虑到有人可以创建一个只包含其他依赖项并且没有任何自己的代码的包。如果有人将 package A 定义为依赖于另一个 package B,如果您从项目中删除该 package B 会发生什么?是的,它不起作用,因为A 需要B。曾经创建过仅包含依赖项的包的人只是想念我眼中使用过的作曲家。这不是使用作曲家的正确方法。
    • 如果您不需要我们提供的配方中的所有内容,这就是我们(CWP 团队)之前建议您执行的操作。值得庆幸的是,现在 CWP 2.0 中的配方更加独立,因此您无需安装“基本”配方提供的所有内容。作为记录,这仍然是我们对 CWP 2.0 的推荐,但同样由于配方更小,这不是问题。如果您不想这样做,另一个答案提供了一种解决方法。建议您将其中一个答案标记为已接受 =)
    【解决方案2】:

    您可以在composer.json 中使用replace 设置:

    "replace": {
        "silverstripe/fulltextsearch": "1.1.0"
    }
    

    Composer 将充当此包已经可用并且不会安装它。请注意,您将无法使用它,因为它并未实际安装。

    【讨论】:

    • 不错的提示!直到 =)
    猜你喜欢
    • 2015-07-22
    • 1970-01-01
    • 2022-06-25
    • 2014-03-18
    • 2016-04-19
    • 1970-01-01
    • 2020-04-12
    • 2021-03-02
    • 1970-01-01
    相关资源
    最近更新 更多