在Composer配置中可能忽略子依赖?

时间:2016-01-06 16:13:27

标签: composer-php

当我运行composer install时,它将安装我的所有“require”和另一个包的“require”。

我的composer.json

{
    "name": "my_app",
    "require": {
        "some/package": "0.0.0"
    }
}

“孩子”依赖

{
    "name": "some/package",
    "require": {
        "zendframework/zend-mail": "2.4.*@dev",
        "soundasleep/html2text": "~0.2",
        "mpdf/mpdf": "6.0.0",
        "endroid/qrcode": "1.*@dev"
    }
}

我知道可以忽略php扩展,但是这些第二个需要包呢?

4 个答案:

答案 0 :(得分:15)

您可以使用composer.json的replace属性忽略要下载的包:https://getcomposer.org/doc/04-schema.md#replace

这样你告诉作曲家,你自己承担或照顾这个包的内容。

这可以帮助您忽略您确定不需要的包裹,但它有点hacky。所以要注意一些事情(比如测试)可能会破坏。 更好的方法是从原始包的维护者处请求补丁,以使需求可选(通过suggest属性)。

编辑:
示例,用于“禁用”zendframework/zend-mail的要求:

{
    "name": "my_app",
    "require": {
        "some/package": "0.0.0"
    },
    "replace": {
        "zendframework/zend-mail": "*"
    }
}

答案 1 :(得分:2)

  

我知道可以忽略php扩展,但是这些第二个需要包呢?

是的,您可以使用--ignore-platform-reqs忽略php,hhvm,lib- *和ext- *平台要求并强制安装,即使本地计算机不能满足这些要求。

但是,我不确定你是否正在回答你的问题。在您的应用程序中要求包没有依赖关系的用例是什么?这不是使用Composer的主要原因吗?

,这是不可能的,除非您正在寻找禁用自动更新依赖项的require --no-update。请查看CLI options for requireinstall

答案 2 :(得分:0)

另一个选择是修改子程序包的['red', 'blue', 'pink', 'redblue', 'redpink', 'bluered', 'bluepink', 'pinkred', 'pinkblue', 'redbluepink', 'redpinkblue', 'blueredpink', 'bluepinkred', 'pinkredblue', 'pinkbluered'] 并删除所需的依赖项。然后,您可以托管该zip文件,并通过为主程序包添加一个额外的存储库来添加引用。

composer.json

然后在您的require部分中,如下所示添加您选择的名称。

"repositories": [
    {
        "type": "package",
        "package": {
            "name": "dr-que/x-y",
            "version": "master",
            "dist": {
                "type": "zip",
                "url": "http://xyplot.drque.net/Downloads/XY_Plot-1.4.zip",
                "reference": "master"
            },
            "autoload": {
                "classmap": ["."]
            }
        }
    }
]

对于自动加载,我只是复制了子程序包的同一自动加载部分。

可以找到原始解决方案here

答案 3 :(得分:0)

另一种解决方法:

  1. 将软件包克隆到您的存储库并修复依赖项
  2. 在您的composer.json中添加您的存储库:
"repositories": [
    { "type": "git", "url": "https://github.com/zhovtyj/mailchimp-laravel" }
],
"require": {
    "php": "^7.1.3",
    ***
    "skovmand/mailchimp-laravel": "dev-master",
},