Composer忽略zip dependecies的composer.json文件

Giu*_*lli 6 php composer-php

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

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

事情是,在我的zip包下载,解压缩并放置在供应商目录后,作曲家完全忽略了其composer.json,其中定义了其他要求......

zip存档是这样的:

  • / DIR1
  • / DIR2
  • 文件1
  • 文件2
  • composer.json

为了让您了解这是我的root 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": "./"
        }
    },
}
Run Code Online (Sandbox Code Playgroud)

而bundle的composer.json包看起来像

{
    "name": "giulianobundles/mybundle",
    "type":"library",
    "require": {
        "giulianobundles/mybundlerequirement": "1"
    }
}
Run Code Online (Sandbox Code Playgroud)

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

dec*_*eze 7

实际上,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文件.