Symfony2:是否可以在捆绑包中有一个composer.json文件


Symfony2: is it possible to have a composer.json file inside a 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时我没有看到该文件被使用

谢谢

如果您想共享一些捆绑包,您应该将它们开发为供应商捆绑包,就像来自第三方的供应商捆绑包一样。因此,您应该为每个捆绑包创建一个版本控制存储库,并为每个捆绑包添加一个 composer.json。要使您的捆绑包可用于symfony作曲家文件,您需要将版本控制URL添加为资源。它可能看起来像这样:

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

快乐的编码:)

如果我理解正确,您正在考虑要么拥有一个包含所有内容的软件版本并将其部署到任何地方,要么在该软件的单个服务器上部署具有不同依赖项的多个版本。

我认为原因不应该是在硬盘驱动器上节省几个字节。

但是作曲家不能帮助你。事实上,你被迫在该 composer.json 中的某个地方包含任何你想要使用的依赖项,以使 Composer 将其包含在自动加载器中。

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