Recentemente conheci um sujeito peculiar em um encontro local de Drupaleiros. Peculiar por não usar Composer e nem Git em um projeto bem sucedido de e-commerce feito em Drupal. “Mas por que?” alguém perguntou à ele. “Porque eu nunca precisei” foi sua resposta. “E como você atualiza o Drupal e módulos?”. “Eu subo por FTP”. “Cara, você precisa aprender a usar Git e Composer”. “Mas eu nunca precisei disso pra manter meu site”.
Em grande parte eu concordo com essa pessoa. Para que usar ferramentas extras se o que você tem é o suficiente para o seu trabalho? Por outro lado, eu acho fundamental testar ferramentas amplamente usadas por desenvolvedores e tirar suas próprias conclusões quanto a utilidade da ferramenta. No caso do Composer, os benefícios são tão óbvios que apenas em raras ocasiões você terá razões para não usá-lo durante o desenvolvimento do seu projeto.
O que é Composer
Composer é um gerenciador de dependências de PHP. Em outras palavras, ele facilita a distribuição, instalação e atualização de programas escritos em PHP (pacotes). Como o Drupal e todos seus módulos e temas funcionam em PHP, usar Composer para gerenciar a instalação e atualização de todo o sistema torna-se conveniente.
Tradicionalmente a instalação do Drupal envolve fazer download do arquivo zip no site oficial e descompactar na pasta onde você deseja rodar o website. Esse processo é tão simples que, à primeira vista, aprender a usar um gerenciador de dependências para instalar o Drupal não parece fazer sentido. Mas raramente você irá usar apenas o Drupal sem nenhum módulo ou tema adicional. Nesse caso você terá que fazer o download de cada módulo e descompactar manualmente. E muitos módulos costumam lançar atualizações frequentes, exigindo mais downloads manuais a cada atualização. Não bastasse isso, alguns módulos exigem download de outras bibliotecas para funcionar corretamente. E pode ocorrer o caso de dois módulos utilizarem a mesma biblioteca porém em versões diferentes. E na hora de desinstalar um módulo você pode facilmente esquecer de remover a biblioteca extra que você adicionou na mão. Chega de problemas, como é que funciona o tal do Composer?
O diagrama nessa página mostra basicamente como tudo funciona. Os pacotes PHP ficam guardados em um servidor remoto conhecido como repositório. Dentro da pasta do seu projeto, você tem um arquivo chamado composer.json. Esse arquivo lista todos os pacotes PHP a serem instalados. O Composer em si é um programa que lê esse arquivo dentro de sua pasta e vai buscar todos os pacotes PHP no repositório, fazendo os downloads automaticamente.
O repositório mais famoso (e que já vem por padrão) se chama Packagist. É possível conectar a outros repositórios, mas geralmente isso não será necessário.
Mão na massa
Vamos lá, como aplicar tudo isso na prática?
Primeiro você precisa instalar o Composer, que é um único arquivo executável de 2MB escrito em php feito para rodar no terminal. Detalhes sobre a instalação eu deixo ao nosso amigo Google.
Para iniciar um projeto em Drupal 9 use o comando
composer create-project drupal/recommended-project MEU_SITE
Esse comando irá criar uma pasta chamada MEU_SITE
(claro que você pode substituir esse nome) com o Drupal inteiro já dentro desta pasta. Apesar dessa pasta conter todo o Drupal (atualmente em 23mil arquivos somando em 72MB) o único arquivo realmente importante é um chamado composer.json
. Para provar isso, delete todos os arquivos dentro do MEU_SITE
exceto o composer.json
. Abra o terminal, vá para dentro da pasta MEU_SITE
e rode esse comando
composer install
Voce verá que todos os arquivos que você removeu estarão de volta. Isso porque o arquivo composer.json
contém a lista de todos os programas (dependências) PHP a serem instaladas. Se você usa git, você pode ignorar todos os 23 mil arquivos que vêm com o Drupal e apenas rastrear o composer.json. Show de bola!
Para adicionar um módulo contribuido use esse comando:
composer require drupal/NOME_DO_MODULO
Por exemplo, você pode instalar o módulo Field Group com o seguinte comando:
composer require drupal/field_group
Esse comando irá fazer o download to módulo Field Group e incluir na lista de pacotes instalados no composer.json
.
Comandos que você irá usar 99% das vezes:
# Instalar todos os pacotes listados em composer.json composer install
# Instalar um pacote composer require NOME_DO_PACOTE
# Desinstalar um pacote composer remove NOME_DO_PACOTE
# Fazer o update do pacote composer update NOME_DO_PACOTE
# Fazer o update de todos os pacotes instalados composer update
Existem outras funcionalidade mas isso é praticamente tudo que você vai precisar usar na grande maioria das vezes. Instalar e atualizar módulos assim fica bem mais fácil, concorda?
Existe alguma desvantagem?
Eu pessoalmente tenho uma pequena insatisfação: para instalar o Drupal usando Composer, você precisará de um computador com pelo menos 4GB de memória RAM porque ele é um devorador de memória durante a instalação inicial do Drupal. Pode parecer besteira porque qualquer computador ou laptop hoje em dia vem com pelo menos 8GB de memória RAM. Porém, pequenos e até médios sites que rodariam perfeitamente com 1GB de RAM acabam necessitando servidores com mais memória.
Para contornar esse problema, eu geralmente faço a instalação inicial do projeto no computador para depois subir todos os arquivos para o servidor. O Composer engasga para instalar o Drupal que é um projeto consideravelmente grande, mas uma vez instalado, os módulos contribuídos não necessitam de tanta memória quanto o próprio Drupal.
Comentários