gulpfile
O gulpfile é o arquivo que contém as tarefas de build do projeto. Ele é escrito em JavaScript e usa o Gulp como ferramenta de build.
Dependências
O gulpfile depende de alguns pacotes do Node.js para funcionar. Para instalar as dependências, basta executar o seguinte comando:
npm install
Algumas dependêcias são antigas e podem apresentar problemas ao executar as tarefas, mas em geral basta executar o processo novamente que o problema é resolvido.
Tarefas
O gulpfile contém as seguintes tarefas:
build
A tarefa build é na realidade uma série de tarefas que são executadas em sequência. Ela é responsável por compilar o projeto e gerar a versão final do plugin.
Para executar a tarefa, basta executar o seguinte comando:
gulp build --ver VERSION
Onde VERSION é a versão do plugin que será gerada. Por exemplo, para gerar a versão 3.0.0, basta executar:
gulp build --ver 3.0.0
É obrigatório passar uma versão para o build, caso contrário, o build irá falhar.
clean
A tarefa clean é responsável por limpar a pasta tmp e dist do projeto.
ts-to-js
A tarefa ts-to-js é responsável por compilar os arquivos TypeScript para JavaScript que estão em client/src/ para tmp/js.
css
A tarefa css é responsável por concatenar e minificar todos os arquivos CSS que estão em client/src/ para tmp/css, gerando um único arquivo app.min.css;
O algoritmo desta tarefa inclui um laço for que percorre todos os arquivos CSS e os concatena em um único arquivo, tendo a capacidade de reorganizar a posição dos arquivos dependendo da prioridade definida seguindo o padrão filename.<priority>.css.
O valor de priority vai de 0 a 10, sendo que com 0, o código é escrito por primeiro e com 10 o código é escrito por último.
Os arquivos que não tiverem um valor de prioridade definido, serão escritos com a prioridade 5.
O objetivo é que só seja definido um valor de prioridade em situações onde o código precise estar em uma posição diferente da que ele seria escrito de forma orgânica.
ejs-to-html
A tarefa ejs-to-html é responsável por compilar os arquivos EJS para HTML que estão em client/src/ para tmp/html.
check-version
Verifica se a versão foi passada como parâmetro para o build. Caso negativo, retorna erro.
build-js
A tarefa build-js é responsável por concatenar e minificar todos os arquivos JavaScript que estão em tmp/js para dist/claroluz/assets/js, gerando um único arquivo app.min.js.
Esta tarefa também elimina todo o código que esteja dentro do seguinte bloco:
//removeIf(production)
...
//endRemoveIf(production)
O package responsável por remover todo o código neste bloco é o gulp-remove-code. Ele é bem antigo e em algumas situações tem falhado em remover o código, como ele começou a apresentar estes problemas quando já estava sendo amplamente usado, foi decidido apenas adicionar um //removeIf(production) adicional na linha em que ele começa a falhar. Isto resolve o problema principal, mas mesmo assim, haverá situações em que ele não remove todos os códigos no processo de build. A solução é executar o processo novamente.
build-critical-js
A tarefa build-critical-js concatena e minifica todos os arquivos que estão em tmp/js/infra/critical/ e o arquivo tmp/js/presenter/web/critical/critical.js, gerando um único arquivo critical.min.js em dist/claroluz/assets/js. Este arquivo é adicionado como código inline pelo lado do servidor.
TIP
Para mais informações sobre o código crítico, veja a seção Código Crítico.
build-html
A tarefa build-html é responsável por concatenar e minificar os arquivos HTML que estão em tmp/html para dist/claroluz/views.
build-css
A tarefa build-css é responsável por copiar os arquivos CSS que estão em tmp/css para dist/claroluz/assets/css.
copy-img
A tarefa copy-img é responsável por copiar os arquivos que estão em client/img para dist/claroluz/assets/img.
copy-server-files
A tarefa copy-server-files é responsável por copiar os arquivos que estão em server para dist/claroluz.
copy-dependencies-js
A tarefa copy-dependencies-js é responsável por copiar todas as bibliotecas da qual o plugin depende para dist/claroluz/assets/js.
TIP
Para mais informações sobre as bibliotecas que o plugin depende, veja a seção Bibliotecas.
copy-lang-files
A tarefa copy-lang-files é responsável por copiar os arquivos de tradução que estão em client/lang para dist/claroluz/assets/lang.
update-version
A tarefa update-version substituí a string {{version}} pela versão passada como parâmetro para o build.
zip
A tarefa zip é responsável por compactar o conteúdo da pasta dist/claroluz em um arquivo claroluz.zip.
Basta fazer o upload deste arquivo na página de plugins do WordPress para instalar a versão compilada.