我的Symfony2(GregCMS)项目包含几个可以单独使用的Bundle。 我创建了一个裸的本地存储库(RepoGregCMS),它已经用我的项目启动了。
我真的需要在单个Symfony项目中嵌入我的包。不过,我不能使用github:repo必须远离互联网。
我希望能够使用来自任何其他项目的projet套装。这些捆绑包已用于设置新项目,其中包含客户将支付的一些功能。
所以我在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"
}
}
}
现在,我想要做的是创建一个需要我的CoreBundle的新Symfony项目。
我创建了projet,然后在composer.json中添加了以下代码行:
...
"gregcms/corebundle" : "dev-master"
...
我还添加了存储库路径:
...
"repositories": [
{
"type": "git",
"url": "../RepoGregCMS"
}
],
...
这么说,我尝试安装新创建的依赖项,但我终于得到了这个错误:
[Composer\Repository\InvalidRepositoryException]
No valid composer.json was found in any branch or tag of ../RepoAubergineCMS, could not load a
package from it.
我认为我的存储库已经裸露,因此不包含文件或目录,这使得作曲家变得疯狂。
我还尝试指向我的存储库(GregCMS)的本地分支,并使其几乎正常工作。我有以下错误:
The requested package gregcms/corebundle could not be found in any version, there may be a typo in the package name
如何使用composer将其Bundle用于其他项目?这是一个尝试指向裸存储库的好习惯吗? 我想说我尝试做的事情与Sensio对symfony做的事情是一样的:在一个项目/回购中创建几个组件,并且能够单独使用它们或者一次性使用它们。 / p> 我有点迷失在那里。谢谢你的帮助
编辑:
我成功创建了一个裸存储库并将其用作指向CVS。但我仍然得到关于未找到的包的错误。我无法弄清楚为什么我会遇到这个错误。配置文件和以后一样。我想念一些东西,但无法弄清楚是什么。
答案 0 :(得分:0)
每个包都应在根级别具有适当的composer.json
。如果你想拥有像"gregcms/gregcms"
这样的包,你必须为GregCMS创建一个composer.json,而"gregcms/corebundle"
之类的其他所有包也应该在存储库的根目录中也有composer.json
像GregCMS/src/GregCMS/CoreBundle
这样的子目录。 Symfony还有一个main package和一个every subpackage。 Symfony(以及其他一些项目)管理这种称为"子树拆分"的技术。
顺便看看https://about.gitlab.com/gitlab-com/他们免费提供无限制的privete存储库托管。