在自定义composer存储库中管理捆绑包



My Symfony2(GregCMS(项目包含几个可以单独使用的Bundle。我创建了一个裸本地存储库(RepoGregCMS(,该存储库已随我的项目启动。

我真的需要将我的捆绑包嵌入到一个Symfony项目中。无论如何,我不能使用github:回购必须远离互联网。

我想做的是使用任何其他项目的项目包。这些捆绑包是为了设置新项目,其中一些功能由客户付费。

因此,我在我的GregCMS/src/GregCMS/CoreBundle以及GregCMS/src/GregCMS/WidgetsBundle中创建了一个composer.json文件。

例如:

{
    "name" : "gregcms/corebundle",
    "description" : "Greg CMS core bundle",
    "type" : "symfony-bundle",
    "authors" : [{
        "name" : "Greg",
        "email" : "author@mail.com"
    }],
    "keywords" : [
        "cms core bundle"
    ],
    "license" : [
        "MIT"
    ],
    "require" : {
    },
    "autoload" : {
        "psr-0" : {
            "GregCMS\CoreBundle" : ""
        }
    },
    "target-dir" : "GregCMS/CoreBundle",
    "repositories" : [{
    }],
    "extra" : {
        "branch-alias" : {
            "dev-master" : "1.0-dev"
        }
    }
}

现在,我想做的是创建一个新的Symfony项目,这将需要我的CoreBundle。

我创建了项目,然后在其composer.json:中添加了以下行

...
"gregcms/corebundle" : "dev-master"
...

我还添加了存储库路径:

...
"repositories": [
    {
        "type": "git",
        "url": "../RepoGregCMS"
    }
],
...

如上所述,我试图安装新创建的依赖项,但我最终得到了这个错误:

[ComposerRepositoryInvalidRepositoryException]                                                 
No valid composer.json was found in any branch or tag of ../RepoAubergineCMS, could not load a   
  package from it.

我认为事实上,我的存储库已经启动为空的,因此不包含文件或目录,这让composer变得疯狂。

我还试着指向我的存储库(GregCMS(的本地分支,并使其几乎工作。我有以下错误:

The requested package gregcms/corebundle could not be found in any version, there may be a typo in the package name

如何使我的捆绑包可用于composer的其他项目?这甚至是一个尝试指向裸存储库的好做法吗?我想说的是,我试图做的与Sensio对symfony所做的相同:在一个项目/回购中创建多个组件,并能够单独或同时使用它们。

我有点迷路了。感谢的帮助

编辑:

我成功地创建了一个裸存储库,并将其用作定点CVS。但我仍然得到了关于找不到包裹的错误。我不明白我为什么要面对这个错误。配置文件与beyond相同。我想念一些东西,但不知道是什么。

每个包都应该在根级别有一个适当的composer.json。如果你想有一个像"gregcms/gregcms"这样的包,你必须为GregCMS创建一个composer.json,而像"gregcms/corebundle"这样的其他包也应该在存储库的根目录中有它的composer.json,而不是在像GregCMS/src/GregCMS/CoreBundle这样的子目录中。Symfony还为主包和每个子包提供了一个。Symfony(和其他一些项目(通过一种名为"子树拆分"的技术来管理这一点。

顺便看看https://about.gitlab.com/gitlab-com/他们免费提供无限量的私有存储库托管。

最新更新