Criando e Atualizando Projetos Symfony Muito Mais Rápido
Há alguns anos, o Instalador do Symfony foi apresentado como a maneira mais rápida de criar novos projetos Symfony. Enquanto o Composer levava vários minutos para criar um novo projeto, o Instalador do Symfony fazia o mesmo em menos de dez segundos.
O truque era que o instalador baixava um arquivo ZIP com todas as dependências exigidas pela versão específica do Symfony que você estava instalando, portanto, não era necessário que o Composer resolvesse as dependências do projeto.
No entanto, com o lançamento do Symfony 4, o Instalador do Symfony foi descontinuado em favor do Composer, para usar ferramentas de desenvolvimento padrão o máximo possível. Infelizmente, isso tornou a criação de novos projetos Symfony mais lenta e, em alguns casos, acionou exceções de “falta de memória” enquanto o Composer estava resolvendo as dependências.
Tornando a Instalação via Composer Mais Rápida
Nos últimos meses, foi trabalhado duro para melhorar o desempenho do Symfony Flex, o pacote usado para criar e gerenciar aplicações Symfony. Há alguns dias, foram feitas duas grandes melhorias:
- Os dois esqueletos usados para criar novos projetos Symfony,
symfony/skeleton
(para aplicações pequenas, APIs, microservices, etc.) esymfony/website-skeleton
(para aplicações web tradicionais) agora incluem um arquivocomposer.lock
para evitar a resolução de dependências do Composer ( veja symfony/skeleton #66 e symfony/web-skeleton #11). Um processo automático garante que os arquivoscomposer.lock
sejam atualizados sempre que uma dependência tiver uma nova versão. - O Symfony Flex remove todas as tags legadas do Composer de todos os componentes do Symfony antes de criar o projeto. Isso remove centenas de tags não utilizadas e salva centenas de milhares de verificações desnecessárias no Composer.
Benchmarks
Graças a essas mudanças, a criação de novos projetos Symfony está entre 60% a 90% mais rápida e a atualização de projetos existentes está até 50% mais rápida. Os resultados reais podem variar dependendo do cache do Composer, do tamanho do projeto, e da velocidade da conexão com a Internet.
Criando Novos Projetos
$ composer create-project symfony/skeleton
# BEFORE: 25 seconds / 395 MB
# AFTER: 10 seconds / 142 MB
$ composer create-project symfony/website-skeleton
# BEFORE: 3 minutes 32 seconds / 766 MB
# AFTER: 21 seconds / 144 MB
Atualizando Projetos Existentes
$ composer update
# BEFORE: 1 minute 10 seconds / 346 MB
# AFTER: 33 seconds / 188 MB
Tradução de: Creating and updating Symfony projects much faster