Criando e Atualizando Projetos Symfony Muito Mais Rápido

Andréia Bohner
2 min readJul 14, 2018

--

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:

  1. Os dois esqueletos usados ​​para criar novos projetos Symfony, symfony/skeleton (para aplicações pequenas, APIs, microservices, etc.) e symfony/website-skeleton (para aplicações web tradicionais) agora incluem um arquivo composer.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 arquivos composer.lock sejam atualizados sempre que uma dependência tiver uma nova versão.
  2. 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

--

--