O Composer tem a opção de carregar várias dependências apenas enquanto estiver em desenvolvimento, para que as ferramentas não sejam instaladas na produção (no servidor ativo). Isso é (em teoria) muito útil para scripts que só fazem sentido no desenvolvimento, como testes, ferramentas de dados falsos, depurador etc.
O caminho a seguir é adicionar um require-dev
bloco adicional com as ferramentas necessárias no dev:
"require-dev": {
"codeception/codeception": "1.6.0.3"
}
e depois (teoricamente) carregue essas dependências via
composer install --dev
Problema e pergunta:
O Composer mudou dramaticamente o comportamento de install
e, update
em 2013, as require-dev
dependências agora estão instaladas por padrão (!), Sinta-se à vontade para criar um composer.json com um require-dev
bloco e execute um composer install
para reproduzir.
Como a maneira mais aceita de implantar é empurrar o compositor. lock (que mantém sua configuração atual do compositor) e, em seguida, executa um composer install
no servidor de produção, isso também instalará o material de desenvolvimento.
Qual é a maneira correta de implantar isso sem instalar as dependências -dev?
Nota: Estou tentando criar uma pergunta / resposta canônica aqui para esclarecer a implantação estranha do Composer. Sinta-se livre para editar esta pergunta.
composer.lock
nunca deve ser adicionado ao repositório Git, NUNCA. A abordagem correta é usar a atualização do compositor na preparação e sincronizar o arquivo na produção (se tudo funcionar, é claro). A preparação deve ser a cópia exata de um ambiente de produção. composer.lock
deve fazer parte .gitignore
.