com Angular e tendo que adicionar uma tag script para cada controller, service ou whatever Imagine toda vez que voce mudar algum arquivo less, ter que refazer o comando para compilar. Imagine qualquer coisa que tê dê problemas e seja repetititva! “I got 99 problems but a task ain`t one”
de tarefas (a.k.a. TaskRunner), criado com Javascript em cima do “Orchestrator”, outro modulo Javascript. Por que o Gulp? Friendly Syntax Facil de Debuggar Facil de extender funções e tarefas Pipe System
gulp Truque de mestre Se você optar por não instalar o módulo local, você pode executar o gulp pelo módulo local através do comando ./node_module/gulp/bin/gulp.js <minha_task>
para que possa ser executado. O comando gulp, seja ele global ou invocado localmente, tem que ser rodado no path onde se encontra o arquivo. Todas as tarefas cadastradas estarão disponiveis para serem usadas :D
tenha tasks dependentes e que depois execute o bloco de cóódigo: { console.log(“Hello OpenSanca”) } gulp, cadastre uma task chamada hello que nãão tenha tasks dependentes e que depois execute o bloco de código : {console.log(“Hello OpenSanca”)}
tem tasks dependentes e que depois faça o seguinte {...} gulp cadastre uma task chamada less que não tem tasks dependentes e que depois faça o seguinte {...} gulp.task(‘less’, [], function () {...})
Copilar Less, Minificar o CSS, Renomear e mover ele para alguma pasta! Nossa sequência de tasks será: get source -> less -> minify -> rename -> move to destination O que nosso gulp sabe fazer? get source e move to destination
the source (ou seja, gulp, pegue o código), gulp. src(), ele pode receber uma string ou array com paths e algumas opções (não entraremos nelas nessa talk) Já quando usamos o : gulp move to destination (gulp, mova para um destino), gulp.dest(), aqui passamos o path para onde estamos mandando os nossos arquivos. Mas e o Less? Minify? Rename? Como faz?
um plugin para minificar e um para renomear! Já que sou um cara firmeza, tá na mão : gulp-less (https://www.npmjs.com/package/gulp-less) gulp-cssnano (https://www.npmjs.com/package/gulp-cssnano) gulp-rename (https://www.npmjs.com/package/gulp-rename)
saida de algo para uma outra função, ou seja, uma sequência. Isso facilita na hora de construir uma task, sempre usando o methodo .pipe() para encadear funções que modificaram um conjunto de arquivos.
pipe system é que podemos usar HANDLES! Podemos executar um .on(‘state’, callback) depois de qualquer pipe ou action do gulp! Com isso, podemos fazer algumas marcações importantes, porém, ao mesmo tempo, podemos poluir todo código amigável que temos...
Node Env! Com isso em mente, podemos utilizar todos os recursos do Node ao nosso favor, como por exemplo os handles, que são originados do stream do Node :D Stream Doc : https://nodejs.org/api/stream.html Outro exemplo é a variavel ‘process’ que esta global (e o proprio global em si). Alem disso temos o NPM pra gerenciar e cadastrar scripts de rapido acesso para nós
que podemos fazer/como fazer a automatizaçãção com o gulp, porém, como aplicar corretamente no meu projeto? Como fazer isso de maneira organizada, elegante e seguindo boas prááticas? Existem 4 etapas báásicas para arquiteturar a automatizaçãção:
um projeto no qual queira implementar a automatização Depois vamos dar um npm init na raiz do projeto e preencher com os dados da nossa aplicaçãção! Por fim, vamos criar um gulpfile.js
Então vamos lá: - Processar Javascript (bundle, minificar e etc) - Processar Less (o mesmo que fizemos, mas com autoprefixer) - Mover Imagens / Fonts - Processar Handlebars - Clean (deletar a build) - Build (faz tudo isso) - Watch -> Build
e escrevemos nossas tasks dentro do gulpfile.js! Lembrem-se de algumas boas práticas: - Menos é mais - Nomes diretos e auto explicativos - Formatar os pipes de maneira correta - Tomar cuidado com parametros a serem passados para plugins - Sempre se atentar a ordem Variáveis / Tasks / Funções Auxiliares
as nossas tarefas funcionando, temos que avaliar se vale a pena deixá-las em um único gulpfile.js! As vezes fica ílegivel e/ou temos que aumentar as tarefas e não conseguimos por causa de todo o tumulto. Nesse momento nós vamos para o próximo passo : gulp modular!