Symfony2:é possível ter um arquivo compositor.json dentro de um pacote?
-
20-12-2019 - |
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
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 :)