在我们公司,我们的目标是将Symfony2用于我们所有的新项目。我们几乎总是会在项目中添加一些额外的捆绑包,例如FOSUserBundle和KnpMenuBundle。我们想维护一个composer.json文件,我们可以简单地将其复制到一个新的项目文件夹,运行composer.phar install
(或创建项目,无论哪种方法都可以工作)并让它安装symfony2以及所有依赖项和附加的bundle我们想用。
换句话说,目标不是首先运行php composer.phar create-project symfony/framework-standard-edition path/ 2.2.1
,然后编辑composer.json以添加/删除包,最后运行composer.phar update来安装我们需要的包。
有关如何实现这一目标的任何想法?
答案 0 :(得分:1)
您可以在github上分叉symfony-standard,修改composer.json,更新composer.lock,然后从您自己的副本中签出并运行composer install
答案 1 :(得分:1)
您可以为您的composer.json创建一个vcs(即git)存储库,始终签入/提交您的所有更改。
由于作曲家使用json并且没有本地支持json的注释,所以有一个composer.json更难以评论/取消注释你定期安装的包。
但是有两种方法可以实现这一目标。
1)使用IgorW的composer-yaml转换器,它可以将composer.json转换为.yml文件。
2)Seldaek / Jordi Boggiano mentioned另一种评论可以在composer.json中实现。
{
"_comment" : {
"friendsofsymfony/rest-bundle" : "0.12.0",
"_" : "_"
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "*@dev",
// ... more stuff here
},
// more stuff here
}
通过这种方式,只需将注释中的行移动到require,即可轻松地将包复制到当前安装中。 (“ _”:“_”条目是在_comment中的所有包之后有一个尾随逗号,但仍然有有效的JSON)。
...但这一切都没有为您提供开箱即用的工作项目。
<强>结论:强>
大多数捆绑包需要配置,并且至少所有捆绑包都必须在内核中注册才能工作。
只是在你的存储库中有一个composer.json就不会有帮助。
您可以fork symfony / symfony-standard ...在您的仓库中添加所有需要的更改(注册包,更改composer.json)并维护此仓库。
维护此repo将需要一些工作,因为forked repo不会使用最新提交更新自身。 如果你想让你的回购更新,你必须合并symfony / symfony-standard的最新提交。
但是创建一个自己肯定是要走的路...只有拥有一个composer.json你可以传递,以便在调用“composer install”之后拥有一个包含所有配置和包的工作项目(当前)不是可能的。