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/他们免费提供无限量的私有存储库托管。