O básico sobre o automatizador de tarefas Make

O trabalho no client-side é cercado por tarefas pequenas e frequentes. Por causa dessas tarefas frequentes, surgiram ferramentas fantásticas como Grunt, Gulp e vários outros. Mas se voltarmos um pouco no tempo, vamos encontrar um cara chamado MAKE. Quem já instalou algum programa em alguma distribuição unix-like sabe bem do quem estou falando. Esse era

O trabalho no client-side é cercado por tarefas pequenas e frequentes. Por causa dessas tarefas frequentes, surgiram ferramentas fantásticas como Grunt, Gulp e vários outros.

Mas se voltarmos um pouco no tempo, vamos encontrar um cara chamado MAKE. Quem já instalou algum programa em alguma distribuição unix-like sabe bem do quem estou falando.

Esse era o processo básico pra instalar o programa.

Mas junto com isso, você precisava resolver uma série de problemas de dependências, caminhos de arquivos, permissões, versão e em último caso, ligava ou chamava quele amigo que manjava muito de Linux e implorava por ajuda.

Muitos podem ver esses problemas como algo ruim, mas observando melhor, isso faz com que você entenda para onde os arquivos estão indo e que para um programa funcionar, ele depende de outros programas e outras bibliotecas, que podem ter uma permissão especial para serem usados.

Tá mas que diabos é o Make e qual a relação dele com o Grunt ou Glup?

Basicamente o MAKE é um atomatizador de tarefas em ambientes unix que foi e é muito usado para compilar programas.

No processo básico de instalação que falei acima o que acontecia era o seguinte:

  1. $ ./configure era um script que depois de executado com sucesso criava o arquivo Makefile
  2. Makefile é o arquivo que dizia ao make quais eram as tarefas a serem realizadas para compilar o programa, essas tarefas eram feitas numa ordem topologica respeitando as dependências dos arquivos.
  3. $ make install esse comando chamava uma tarefa que estava definida no makefile e que tinha como objetivo fazer a instalação do programa compilado anteriormente.

Veja mais sobre ordenação topologica aqui

O Make é nativo das plataformas Linux, mas caso não tenha basta instalar o pacote build-essential

Antes de brincarmos com o Make, seria bom criar uma pasta em qualquer lugar de sua preferência, e dentro dela vamos criar nosso arquivo Makefile. Neste arquivo vamos colocar esse conteúdo (respeitando as tabulações):

Agora, via terminal e dentro dessa pasta, execute o make:

Legal, né?

Se quiser mudar a ordem de execução só alterar a linha abaixo:

Para:

Execute o make e observe a saída novamente. Percebeu que a ordem mudou?!

Você também pode chamar uma tarefa especifica, assim:

Vamos fazer algo útil

Agora que sabemos o básico do make, vamos pensar em como poderiamos substituir uma tarefa simples do grunt, nosso problema será esse:

  1. Compilar nossos arquivos stylus
  2. Concatenar todos os arquivos
  3. Minificar

A saída desse cara que nós acabamos de fazer vai ser algo assim:

Existem alguns variavéis do Make que devemos saber:

$@ – isso mostra o nome target atual:

$< – isso mostra o nome da primeira dependência:

[$^] – isso mostra a lsita das dependências do target:

[$?] – Lista de todos arquivos de dependências mais recentes que a regra, a lista de arquivos é separada por espaço:

Crie 2 ou mais arquivos *.txt na pasta que irá ficar esse teste do makefile e coloquei qualquer texto dentro deles.

[$*] – Nome do arquivo sem a extensão:

Muita coisa legal dá pra fazer com o Make.

Dá para por exemplo você se conectar via ssh ou ftp e fazer o upload ou download de arquivos, rodar um shell script com diversas rotinas, você pode criar todo o setup da sua máquina colocando o make para instalar tudo que vc usa precisa: vim, mongodb, git, nodejs, sublime, brew, ou até mesmo configurar o deploy de sua aplicação, etc etc.

Isso só foi o ponto de partida, foi o básico do básico do básico e mais um pouco básico do que o make faz.

Vocês trocariam seu Gruntfile (ou semelhantes) por um Makefile?

(E por favor, não estou dizendo que as outras ferramentas são ruins, ou que você não deve usá-las. Quero apenas chamar a atenção para as ferramentas que já estão aqui há muito mais tempo e não conhecemos tão bem quanto pensamos.)

Referência suprema: Manual Make

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *