gpt4 book ai didi

php - Composer 忽略 zip 依赖项的 composer.json 文件

转载 作者:可可西里 更新时间:2023-11-01 13:19:39 37 4
gpt4 key购买 nike

我正在将 Composer 用于需要处理某些依赖项的项目,但我遇到了一个非常奇怪的问题。 Composer 忽略子包中包含的 composer.json 文件。

我的项目需要检索一些自定义 zip 包,在这些包中,一个 composer.json 文件定义了其他要求。这些要求的存储库在根 composer.json 文件中声明,因为 Composer 无法递归地获取存储库。

问题是,在我的 zip 包被下载、解压并放入 vendor 目录后,composer 完全忽略了定义了其他要求的 composer.json...

压缩包是这样的:

  • /目录1
  • /目录2
  • 文件1
  • 文件2
  • Composer .json

为了让您了解我的根 composer.json 的样子:

{
"name": "myproject/project",
"type": "library",
"repositories": [
{
"packagist" : false
},
{
"type": "package",
"package": {
"name" : "giulianobundles/mybundle",
"version" : "1",
"dist": {
"url": "http://url/to/zip/file",
"type": "zip"
}
}
},
{
"type": "package",
"package": {
"name" : "giulianobundles/mybundlerequirement",
"version" : "1",
"dist": {
"url": "http://url/to/zip/file",
"type": "zip"
},
}
},
],
"require": {
"php": ">=5.3.2",
"giulianobundles/mybundle": "*"
},
"autoload": {
"psr-0": {
"config": "./"
}
},
}

bundle 的 composer.json 包看起来像

{
"name": "giulianobundles/mybundle",
"type":"library",
"require": {
"giulianobundles/mybundlerequirement": "1"
}
}

Mybundle 包已成功安装,但其 composer.json 文件被完全忽略。任何的想法?我错过了什么?

最佳答案

事实上,Composer 不会递归地查看文件系统中的 composer.json 文件。它需要查看 存储库 中的 composer.json 文件。它通常的工作方式是一个包在某处有一个 git 或 svn URL。 Composer 将获取,例如,git://<host>/<package>/composer.json直接从存储库中找出该包的依赖关系,甚至在安装它之前计算整体依赖关系。

在你的例子中,你定义了一个 package内联在你自己的 composer.json 文件中。这用于而不是依赖项中的 composer.json 文件。这意味着 Composer 接受 "package": { ... }作为该包的规范 composer.json 文件,它不会查看代码本身;尤其是在打开包装之后。它将 Zip 文件视为没有自己的 composer.json 文件。

"package": { ... } 中定义依赖项或者将代码托管在版本控制系统中,Composer 可以从中获取 composer.json 文件。

关于php - Composer 忽略 zip 依赖项的 composer.json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15023126/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com