Symfony2:是否可以在bundle中包含composer.json文件?

时间:2013-11-15 22:19:39

标签: php json symfony composer-php

我的项目包含多个捆绑包,其中一些是必需的,有些我将在特定服务器上使用。现在我需要为非必需的bundle添加依赖项。我认为将它作为项目依赖项添加到主composor.json中是浪费,因为如果我不使用该包,我可能不会使用该代码。

是否可以在该捆绑包中包含composer.json文件?如果不可能我怎么处理我的案子?

实施例

src/
   Project/
      RequiredFirstBundle/
      RequiredSecondBundle/
      Non-RequiredBundle/
              composor.json 

我试过了:

//Path: src/Project/Non-RequiredBundle/composer.json

{
    "name": "project/non-requiredbundle",
    "description": "desc",
    "type": "symfony-bundle",
    "license": "MIT",
    "authors": [
        {
            "name": "name",
            "email": "email"
        }
    ],
    "require": {
        "symfony/framework-bundle": "~2.2",
        "another/dependency": "*"
    },
    "autoload": {
        "psr-0": { "Project\\Non-RequiredBundle": "" }
    },
    "target-dir": "Project/Non-RequiredBundle"
}

但是当我执行composer.phar update

时,我没有看到该文件被使用

由于

2 个答案:

答案 0 :(得分:2)

如果你想分享你的一些捆绑包,你应该将它们开发为像第三方那样的供应商捆绑包。因此,您应该为每个bundle创建一个Version-Control存储库,并为每个bundle添加一个composer.json。要使您的捆绑包可用于symfony composer-file,您需要将VersionControl url添加为资源。它可能看起来像这样:

"repositories": [
    {
        "type": "vcs"
        "url": "https://github.com/igorw/monolog"
    }
],

快乐编码:)

答案 1 :(得分:0)

如果我理解正确,您正在考虑使用包含所有内容的ONE软件版本并将其部署到任何地方,或者在该软件的单个服务器上部署具有不同依赖关系的MULTIPLE版本。

我认为原因不应该是在硬盘上保存几个字节。

但作曲家无法帮助你。事实上,你被迫在composer.json中包含你想要使用的任何依赖项,以使Composer将它包含在自动加载器中。

我会选择“一个版本适合所有人”并简单地包含所需的任何依赖项。无需担心部署未使用的软件部分。即使您认为用户将使用的部分,您也会一直这样做。