维护composer.json以便在项目之间重用

时间:2013-05-23 08:42:11

标签: symfony composer-php

在我们公司,我们的目标是将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来安装我们需要的包。

有关如何实现这一目标的任何想法?

2 个答案:

答案 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”之后拥有一个包含所有配置和包的工作项目(当前)不是可能的。