首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Composer忽略zip依赖的composer.json文件

Composer忽略zip依赖的composer.json文件
EN

Stack Overflow用户
提问于 2013-02-22 11:26:45
回答 1查看 4.6K关注 0票数 6

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

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

问题是,在我的zip包被下载、解压缩并放在供应商dir中之后,composer完全忽略了它的composer.json,其中定义了其他需求.

zip归档文件如下所示:

  • /dir1
  • /dir2
  • file1
  • file2
  • composer.json

为了给您一个想法,我的根composer.json是这样的:

代码语言:javascript
复制
{
    "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": "./"
        }
    },
}

而这个包的composer.json包看起来就像

代码语言:javascript
复制
{
    "name": "giulianobundles/mybundle",
    "type":"library",
    "require": {
        "giulianobundles/mybundlerequirement": "1"
    }
}

Mybundle包安装成功,但是它的composer.json文件被完全忽略了。有什么想法吗?我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-22 11:39:01

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

在您的示例中,您将在自己的package文件中定义一个内联的composer.json。这将用于替代依赖项中的composer.json文件。这意味着Composer将"package": { ... }作为该包的规范composer.json文件,它不会查看代码本身,尤其是在解压它之后。它将Zip文件视为没有自己的composer.json文件。

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15023126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档