Composer - 添加没有 composer.json 的 git 存储库

Posted

技术标签:

【中文标题】Composer - 添加没有 composer.json 的 git 存储库【英文标题】:Composer - adding git repository without composer.json 【发布时间】:2014-11-28 14:23:57 【问题描述】:

我尝试从 github (designmodo/Flat-UI) 添加存储库,使用配置并得到错误No valid composer.json was found in any branch or...Your requirements could not be resolved to an installable set of packages.The requested package designmodo/flat-ui could not be found in any version

我在配置中犯了什么错误:

"repositories": 
   "flat-ui": 
     "type": "package",
     "package": 
       "name": "designmodo/Flat-UI", 
       "version": "1.3.0", // Don't know is it important? Where get this number in repo?
       "source": 
         "url": "https://github.com/designmodo/Flat-UI",
         "type": "git",
         "reference": "dev-master" // reference is branch name? 
       
     
   
 ,

 "require": 
   "twbs/bootstrap-sass": "~3.2",
   "designmodo/Flat-UI": "dev-master" // branch again (/minimum-stability?)
 ,

在某些时候composer下载包但返回错误(我不知道他什么时候做的,我在供应商文件夹中查找并且designmodo文件夹在那里)。

【问题讨论】:

【参考方案1】:

问题解决了。在"designmodo/Flat-UI": "*" 部分中将reference 更改为master 并将版本更改为任何*。之后通过 git 下载作曲家包并更新 composer.lock 没有问题。应该适用于任何 github 存储库。

工作配置:


    "repositories": 
      "flat-ui": 
        "type": "package",
        "package": 
          "name": "designmodo/Flat-UI",
          "version": "1.3.0",
          "source": 
            "url": "https://github.com/designmodo/Flat-UI",
            "type": "git",
            "reference": "master"
          
        
      
    ,
    "require": 
        "twbs/bootstrap-sass": "~3.2",
        "designmodo/Flat-UI": "*"
    ,

https://getcomposer.org/doc/05-repositories.md

【讨论】:

这对我帮助很大。这可能很明显,但name 需要具有“供应商名称、正斜杠和包名称”(根据 Composer 生成的弃用警告)。 version 必须是有效的版本字符串(如 1.0.0),尽管它可以是任意的。【参考方案2】:

它只对我删除标签有效,如下所示:


        "repositories":[
                      
            "type": "package",
            "package": 
              "name": "designmodo/Flat-UI",
              "version": "1.3.0",
              "source": 
                "url": "https://github.com/designmodo/Flat-UI",
                "type": "git",
                "reference": "master"
              
            
        
        ],
        "require": 
            "twbs/bootstrap-sass": "~3.2",
            "designmodo/Flat-UI": "*"
        , 

【讨论】:

【参考方案3】:

我有一个类似的问题:除了添加一个 Git 存储库,我还想包含一个 SVN 存储库(没有composer.json)和一个 ZIP 文件。上面的解决方案对我不起作用。

使用 Composer(版本 1)我收到以下错误消息:

问题 1 - 请求的包 XXX 在任何地方都找不到 版本,包名可能有错别字。

升级到 Composer 版本 2 有帮助,因为错误消息更有帮助:

问题 1 - 根 composer.json 需要 XXX *,找到 XXX[master] 但是 它不符合您的最低稳定性。

所以解决方案是add "@dev" behind the required version。此外,我必须将 "secure-http": false 包含到 config 部分,因为 ZIP 文件来自没有 HTTPS 的页面。

这是我完整的composer.json 文件:


    "prefer-dist": true,
    "repositories": 
            "viathinksoft/vnag": 
                    "type": "package",
                    "packagist.org": false,
                    "package": 
                            "name": "viathinksoft/vnag",
                            "version": "master",
                            "license": "Apache-2.0",
                            "source": 
                                    "url": "https://svn.viathinksoft.com/svn/vnag/",
                                    "type": "svn",
                                    "reference": "trunk/"
                            
                    
            ,
            "dcodeio/bcrypt.js": 
                    "type": "package",
                    "packagist.org": false,
                    "package": 
                            "name": "dcodeio/bcrypt.js",
                            "version": "master",
                            "license": [
                                    "BSD-3-Clause",
                                    "MIT"
                            ],
                            "source": 
                                    "url": "https://github.com/dcodeio/bcrypt.js",
                                    "type": "git",
                                    "reference": "master"
                            
                    
            ,
            "spamspan/spamspan": 
                    "type": "package",
                    "packagist.org": false,
                    "package": 
                            "name": "spamspan/spamspan",
                            "version": "master",
                            "license": "GPL-2.0-only",
                            "dist": 
                                    "url": "http://www.spamspan.com/releases/spamspan-latest.zip",
                                    "type": "zip",
                                    "reference": "master"
                            
                    
            
    ,
    "require": 
            "dcodeio/bcrypt.js": "*@dev",
            "viathinksoft/vnag": "*@dev",
            "spamspan/spamspan": "*@dev"
    ,
    "config": 
            "secure-http": false,
            "preferred-install": 
                    "*": "dist"
            
    

我还想解释一下我这样做的原因: 这些是没有composer.json 文件的三个第三方产品的示例。我知道“bcrypt.io”是一个npm 项目,理论上我可以使用npm 来下载它,我可以手动下载并解压composer 的postinstall 部分中的ZIP 文件。 但是,我想在我的项目的vendor 目录中拥有所有依赖项,但我不想在这个目录中手动添加一些东西,因为它是由 composer 管理的。所以我让作曲家处理一切。

【讨论】:

以上是关于Composer - 添加没有 composer.json 的 git 存储库的主要内容,如果未能解决你的问题,请参考以下文章

Composer 无法安装 yii2 扩展

windows下安装composer小坑

Composer在没有开发要求的AWS上安装

Composer 自动加载自定义类

在 Windows 上安装 Composer

PHP 中使用 Composer