Pergunta

Meu projeto consiste em vários pacotes, alguns deles são necessários e outros usarei em servidores específicos.agora preciso adicionar dependências para um pacote não obrigatório.Acho um desperdício adicioná-lo como uma dependência do projeto no composor.json principal, pois talvez não use esse código se não usar o pacote.

é possível ter um arquivo compositor.json dentro desse pacote?se não for possível, como posso lidar com o meu caso?

Exemplo

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

Tentei:

//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"
}

mas não vejo que o arquivo seja usado quando executo composer.phar update

Obrigado

Foi útil?

Solução

Se bem entendi, você está pensando em ter UMA versão de software contendo tudo e implantá-la em qualquer lugar, ou ter MÚLTIPLAS versões com diferentes dependências implantadas no servidor individual desse software.

Não acho que o motivo deva ser salvar alguns bytes no disco rígido.

Mas o compositor não pode ajudá-lo com isso.Na verdade, você é forçado a incluir qualquer dependência que deseja usar em algum lugar desse compositor.json para fazer o Composer incluí-la no autoloader.

Eu escolheria "uma versão para todos" e simplesmente incluiria qualquer dependência necessária.Não há necessidade de se preocupar com a implantação de peças de software que não são utilizadas.Você fará isso o tempo todo, mesmo com as peças que acha que os usuários usarão.

Outras dicas

Se você quiser compartilhar alguns de seus pacotes, você deve desenvolvê-los como pacotes de fornecedores, como os de terceiros.Portanto, você deve criar um repositório de controle de versão para cada um dos seus pacotes e adicionar um compositor.json para cada pacote.Para disponibilizar seus pacotes para o arquivo compositor do symfony, você precisa adicionar sua url VersionControl como um recurso.Pode ser algo assim:

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

Boa codificação :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top