Симфони2:возможно ли иметь файл композитора.json внутри пакета?

StackOverflow https://stackoverflow.com//questions/20011620

Вопрос

Мой проект состоит из нескольких пакетов, некоторые из них необходимы, а некоторые я буду использовать на определенных серверах.теперь мне нужно добавить зависимости для необязательного пакета.Я считаю, что добавлять его в качестве зависимости проекта в основной файл composor.json — напрасная трата, поскольку я могу не использовать этот код, если не буду использовать пакет.

возможно ли иметь файл композитора.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

Спасибо

Это было полезно?

Решение

Если я вас правильно понимаю, вы думаете о том, чтобы либо иметь ОДНУ версию программного обеспечения, содержащую все, и развертывать ее повсюду, либо иметь НЕСКОЛЬКО версий с различными зависимостями, развернутыми на отдельном сервере этого программного обеспечения.

Я не думаю, что причина должна заключаться в том, чтобы сэкономить несколько байт на жестком диске.

Но композитор не сможет вам в этом помочь.Фактически, вы вынуждены включить любую зависимость, которую хотите использовать, где-нибудь в этом композиторе.json, чтобы Composer включил ее в автозагрузчик.

Я бы выбрал «одну версию, подходящую всем» и просто включил бы любую необходимую зависимость.Нет необходимости беспокоиться о развертывании неиспользуемых частей программного обеспечения.Вы будете делать это постоянно, даже с теми частями, которые, по вашему мнению, будут использовать пользователи.

Другие советы

Если вы хотите поделиться некоторыми из своих пакетов, вам следует разрабатывать их как пакеты поставщиков, например пакеты третьих сторон.Поэтому вам следует создать репозиторий контроля версий для каждого из ваших пакетов и добавить композитор.json для каждого пакета.Чтобы сделать ваши пакеты доступными для файла композитора Symfony, вам необходимо добавить URL-адрес VersionControl в качестве ресурса.Это может выглядеть примерно так:

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

Приятного кодирования :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top