Os desenvolvedores da Web também podem usar o Make!

Agora é muito comum no desenvolvimento da web compilar arquivos de origem antes de implantá-los, e há muitas soluções personalizadas específicas de linguagem para fazer isso. Em muitos casos, essas ferramentas podem ser exageradas, quando um simples Makefile realizaria a tarefa com facilidade. O Make é instalado em quase todos os sistemas por padrão, e estar familiarizado com ele é uma grande vantagem para qualquer desenvolvedor generalista.

Então, como podemos usá-lo no contexto de desenvolvimento web? Bem, você pré- compila seus modelos de Handlebars certo? Digamos que você esteja criando um pequeno cliente Twitter com Handlebars e esteja pronto para fazer uma implantação. Você tem seus três modelos de guiador, mas deseja compilá-los em templates.js em seu diretório de scripts. Aqui está um Makefile que faria isso:

TEMPLATESRC = templates/profile.handlebars templates/timeline.handlebars templates/tweet.handlebars
TEMPLATEOBJ
= ${TEMPLATESRC:.handlebars=.js}
TEMPLATEOUT
= js/templates.js

$
(TEMPLATEOUT) : $(TEMPLATEOBJ)
cat $
^ > $@

%.js : %.handlebars
handlebars $
< -f $@

.PHONY : templates
templates
: $(TEMPLATEOUT)

Agora é só executar make templatese seus modelos são construídos. A sintaxe parece bastante misteriosa, mas aqui está a essência de como funciona. A TEMPLATESRCvariável é apenas uma lista dos arquivos de modelo de entrada. A TEMPLATEOBJvariável é uma transformação sobre a lista de entrada, substituindo o sufixo .handlebars pelo sufixo .js. A TEMPLATEOUTvariável é apenas o nome do arquivo de modelo JavaScript compilado.

O resto do Makefile é a especificação de dependência. Na verdade, um Makefile é apenas uma lista de destinos e suas dependências e as etapas para resolver as dependências. Os destinos e dependências são declarados por com a sintaxe. Portanto, é um alvo do qual depende , o que basicamente quer dizer que, para construirmos templates.js, devemos primeiro construir profile.js, timeline.js e tweet.js. As regras para construir os arquivos .js individuais para cada modelo são tratadas pela regra, que especifica como fazer um arquivo .js a partir de um arquivo .handlebars correspondente. Nessa regra, usamos duas das variáveis ​​implícitas do Make: é o nome da primeira dependência eTARGET : DEPENDENCIES$(TEMPLATEOUT)$(TEMPLATEOBJ)%.js : %.handlebars$<$@é o nome do alvo. Eles são usados ​​para executar o comando do guidão para compilar o modelo individual. Depois que os modelos individuais são compilados, a $(TEMPLATEOBJ)dependência de $(TEMPLATEOUT)é satisfeita. O arquivo templates.js final é construído concatenando todos os arquivos .js individuais (especificados pela $^variável implícita, que contém todas as dependências) no arquivo de destino, novamente especificado por $@.

Mesmo que você não use o Make em seus próprios projetos, é bom estar familiarizado com ele. Ser capaz de navegar e modificá-los em outros projetos é uma habilidade útil e também lhe dá a chance de brincar em um ambiente de programação declarativo.