Ini adalah tugas yang saya tidak tahu bagaimana menggantinya dengan dependensi tugas.
...
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');
});
});
Changelog terkait https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md#35 [deprecate gulp.run]
javascript
gulp
toutpt
sumber
sumber
scripts
, tetapi masuk akal juga untuk memaksa menjalankan tugas ini segera (tanpa menunggu sampai beberapa file skrip berubah).gulp.task('default', ['build', 'watch']);
, yang pertama dibangun dan kemudian mulai menonton.Atau Anda bisa melakukan seperti ini:
sumber
.start
adalah metode Orchestrator. Karena Gulp mewarisi dari itu, itu harus bekerja. Saya memicu tugas gulp dari fungsi non-gulp (watchify) dan ini tampaknya berfungsi.gulp.start
akan dihapus di rilis berikutnya: github.com/gulpjs/gulp/issues/505#issuecomment-45379280gulp-start
dapat diganti denganrun-sequence
npmjs.com/package/run-sequencesumber: https://github.com/gulpjs/gulp/issues/755
gulp.start()
tidak pernah dimaksudkan untuk menjadi api publik atau digunakan. Dan seperti yang dinyatakan di atas dalam komentar, manajemen tugas sedang diganti di rilis berikutnya .... jadigulp.start()
akan melanggar.Maksud sebenarnya dari desain gulp adalah membuat fungsi Javascript biasa, dan hanya membuat tugas untuk memanggilnya.
Contoh:
sumber
Maafkan saya karena menghidupkan kembali pertanyaan lama. Jawaban yang diterima tidak membahas masalah menjalankan tugas sebelum mengatur jam tangan. Jawaban selanjutnya menggunakan gulp.start yang akan ditiadakan. Jawaban ketiga menunjukkan bahwa fungsi reguler harus digunakan tetapi contohnya tampak aneh. Saya melakukan beberapa pencarian tetapi tidak menemukan contoh sederhana.
Inilah solusi saya. Idenya adalah untuk mendefinisikan fungsi js biasa kemudian mendaftarkannya sebagai tugas. Fungsi tersebut kemudian dapat dipanggil secara langsung jika diperlukan atau dari dalam jam tangan.
Saya baru menelan. Tolong beri tahu saya jika saya melewatkan sesuatu yang jelas.
sumber
gulp.watch
tugas yang ditentukanwatchTask()
sebelumbuildTask()
dikonfirmasi selesai? Saya merasa ini masih kondisi balapan, dan tidak menjamin membangun sebelum menonton.teguk 4
Saya Suka gulp4!
sumber
Seperti yang disebutkan @dman,
gulp.start
akan dibuang di versi berikutnya. Juga bisa dilihat dalam edisi teguk ini .Dan pada komentar jawaban @Pavel Evstigneev, @joemaller menyebutkan bahwa run-sequence dalam skenario ini bisa kita gunakan .
Tapi harap dicatat bahwa, penulis run-sequence mengatakan:
Jadi, sebelum gulp 4.0, kita bisa menggunakan run-sequence , setelah 4.0 kita bisa menggunakan gulp saja.
sumber
Jika Anda perlu mempertahankan urutan tugas yang sedang berjalan, Anda dapat menentukan dependensi seperti yang dijelaskan di sini - Anda hanya perlu mengembalikan streaming dari dependensi:
Tentukan tugas yang bergantung padanya:
Dan gunakan dari jam tangan:
Sekarang
dependecy
tugas akan selesai sebelumdepends
dijalankan (misalnya tugas 'melati' dan 'embed' Anda akan menjadi dependensi dan Anda akan memiliki tugas 'server' lain yang akan bergantung padanya). Tidak perlu peretasan apa pun.sumber
Di Gulp 4, satu-satunya hal yang tampaknya berhasil bagi saya adalah:
sumber
Untuk menjalankan tugas sebelum mulai menonton, alih-alih menggunakan gulp.run () atau gulp.start (), cukup jalankan perintah gulp langsung ke atas.
Jadi, alih-alih:
Kerjakan saja:
Atau Anda dapat menggabungkan kode yang terakhir itu dalam fungsi "normal" dan memanggilnya kapan pun Anda mau.
- Terinspirasi oleh jawaban ini dari utas serupa .
sumber
Saya masih tidak melihat bagaimana ini benar-benar menyelesaikan pertanyaan yang ada.
Jika saya memiliki 4 tugas dengan dependensi yang ditentukan di antara mereka
A, B, C, D
di mana A bergantung pada B, dll seperti yang didefinisikan oleh
gulp.task('A',['B'],function A(){});
dan kemudian saya mendefinisikan tugas baru menggunakan gulp.watch yang menjalankan hanya fungsi akan menduplikasi dependensi.misalnya diberikan tugas-tugas ini (setiap fungsi tugas diekspos melalui nama):
saya bisa menulis 1)
yang akan mengeksekusi A-> D tetapi jika misalnya Langkah B gagal itu tidak akan pernah masuk tugas (pikirkan kompilasi atau uji kesalahan)
atau saya bisa menulis 2)
yang tidak akan menjalankan A-> D sampai sesuatu diubah terlebih dahulu.
atau saya bisa menulis 3)
yang akan menyebabkan duplikasi (dan error seiring waktu) hierarki dependensi.
PS: Jika seseorang bertanya-tanya mengapa saya ingin tugas jam tangan saya dijalankan jika ada tugas dependen yang gagal, biasanya karena saya menggunakan jam tangan untuk pengembangan langsung. misalnya. saya memulai tugas jam tangan saya untuk mulai mengerjakan tes, dll. dan bisa jadi kode awal yang saya mulai sudah memiliki masalah sehingga kesalahan.
Jadi saya berharap bahwa gulp run atau yang setara tetap ada untuk beberapa waktu
sumber