使用Composer添加没有composer.json的Git仓库

19

我尝试从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下载了一个包但返回了错误(我不知道他什么时候这样做了,我在vendor文件夹中查找,发现designmodo文件夹仍然存在)。

3个回答

23
问题已解决。尝试将reference更改为master,并将版本更改为任何*"designmodo/Flat-UI": "*"部分。之后,使用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),尽管它可以是任意的。 - majorobot

9

只有去掉标签后才对我有效,就像这样:

{
        "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": "*"
        }, 
}

0

我有类似的问题:除了添加一个Git仓库,我还想包括一个没有composer.json的SVN仓库和一个ZIP文件。上面的解决方案对我没有用。

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

问题1 - 请求的XXX软件包在任何版本中都找不到,可能是软件包名称中有误。

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

问题1 - 根composer.json需要XXX*,找到了XXX[master]但它与您的最小稳定性不匹配。

因此解决方案是在所需版本后面添加"@dev"。此外,我还必须将"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处理一切。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接