Aqui está uma tarefa composta que não sei como substituí-la por dependências de tarefas.
...
gulp.task('watch', function () {
var server = function(){
gulp.run('jasmine');
gulp.run('embed');
};
var client = function(){
gulp.run('scripts');
gulp.run('styles');
gulp.run('copy');
gulp.run('lint');
};
gulp.watch('app/*.js', server);
gulp.watch('spec/nodejs/*.js', server);
gulp.watch('app/backend/*.js', server);
gulp.watch('src/admin/*.js', client);
gulp.watch('src/admin/*.css', client);
gulp.watch('src/geojson-index.json', function(){
gulp.run('copygeojson');
});
});
O changelog correspondente https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md#35 [deprecate gulp.run]
javascript
gulp
toutpt
fonte
fonte
scripts
, mas também faz sentido forçar a execução dessa tarefa imediatamente (sem esperar até que algumas alterações no arquivo de script).gulp.task('default', ['build', 'watch']);
, que primeiro cria e depois começa a assistir.Ou você pode fazer assim:
fonte
.start
é um método de orquestrador. Como Gulp herda disso, deve funcionar. Estou disparando uma tarefa de gulp a partir de uma função não gulp (watchify) e isso parece estar funcionando.gulp.start
será removido na próxima versão: github.com/gulpjs/gulp/issues/505#issuecomment-45379280gulp-start
pode ser substituída porrun-sequence
npmjs.com/package/run-sequencefonte: https://github.com/gulpjs/gulp/issues/755
gulp.start()
nunca foi concebido para ser uma API pública nem usado. E, conforme declarado nos comentários acima, o gerenciamento de tarefas será substituído na próxima versão ... portantogulp.start()
, será interrompido.A verdadeira intenção do design do gulp é fazer funções JavaScript regulares e apenas fazer a tarefa de chamá-las.
Exemplo:
fonte
Perdoe-me por ressuscitar uma velha questão. A resposta aceita não aborda a questão da execução de tarefas antes de definir os relógios. A próxima resposta usa gulp.start, que está indo embora. A terceira resposta aponta que funções regulares devem ser usadas, mas o exemplo parece estranho. Fiz algumas pesquisas, mas não encontrei um exemplo simples.
Aqui está minha solução. A ideia é definir funções js regulares e então registrá-las como tarefas. As funções podem então ser chamadas diretamente se necessário ou de dentro de um relógio.
Eu sou novo para engolir. Por favor, deixe-me saber se eu esqueci algo óbvio.
fonte
gulp.watch
tarefas definidas emwatchTask()
antes debuildTask()
ser confirmado como concluído? Eu sinto que isso ainda é uma condição de corrida, e não garante a construção antes do relógio.gole 4
Eu gosto de gulp4!
fonte
Como @dman menciona isso,
gulp.start
serão descartados na próxima versão. Também pode ser visto nesta edição do gole .E nos comentários da resposta de @Pavel Evstigneev, @joemaller menciona que podemos usar a sequência de execução neste cenário.
Mas observe que o autor da sequência de execução diz:
Assim, antes gole 4.0, podemos usar run-seqüência , após 4.0, podemos usar apenas gole.
fonte
Se você precisa manter a ordem das tarefas em execução, pode definir dependências conforme descrito aqui - você só precisa retornar o fluxo da dependência:
Defina a tarefa que depende disso:
E use-o do relógio:
Agora a
dependecy
tarefa será concluída antes de serdepends
executada (por exemplo, suas tarefas 'jasmim' e 'incorporar' seriam dependências e você teria outro 'servidor' de tarefas que dependeria delas). Não há necessidade de hacks.fonte
No Gulp 4, a única coisa que parece estar funcionando para mim é:
fonte
Para executar uma tarefa antes de começar a assistir, em vez de usar gulp.run () ou gulp.start (), apenas execute o comando gulp diretamente.
Então, em vez de:
Apenas faça:
Ou você pode envolver esse último código em uma função "normal" e chamá-la sempre que quiser.
- Inspirado por esta resposta de um tópico semelhante .
fonte
Ainda não vejo como isso realmente resolve a questão em questão.
Se eu tiver 4 tarefas com dependências definidas entre elas
A, B, C, D
onde A depende de B, etc, conforme definido por
gulp.task('A',['B'],function A(){});
e então eu defini uma nova tarefa usando gulp.watch rodando apenas as funções que duplicariam as dependências.por exemplo, dadas essas tarefas (cada função de tarefas exposta através do nome):
eu posso escrever 1)
que executaria A-> D, mas se, por exemplo, a Etapa B falhar, ela nunca entrará na tarefa (pense em erro de compilação ou teste)
ou posso escrever 2)
que não executaria A-> D até que algo fosse alterado primeiro.
ou posso escrever 3)
o que causaria duplicação (e erros ao longo do tempo) da hierarquia de dependência.
PS: Caso alguém esteja se perguntando por que eu gostaria que minha tarefa do relógio fosse executada se alguma das tarefas dependentes falhar, é geralmente porque eu uso o relógio para desenvolvimento ao vivo. por exemplo. Eu inicio minha tarefa de monitoramento para começar a trabalhar em testes etc. e pode ser que o código inicial com o qual eu inicio já tenha problemas, portanto, erros.
Espero que o gulp run ou algo equivalente permaneça por algum tempo
fonte