当我运行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扩展,但是这些第二个需要包呢?
答案 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 require和install。
答案 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)
另一种解决方法:
"repositories": [
{ "type": "git", "url": "https://github.com/zhovtyj/mailchimp-laravel" }
],
"require": {
"php": "^7.1.3",
***
"skovmand/mailchimp-laravel": "dev-master",
},