Tugas Gulpjs berikut berfungsi dengan baik saat mengedit file di pencocokan glob:
// watch task.
gulp.task('watch', ['build'], function () {
gulp.watch(src + '/js/**/*.js', ['scripts']);
gulp.watch(src + '/img//**/*.{jpg,jpeg,png,gif}', ['copy:images']);
gulp.watch(src + '/less/*.less', ['styles']);
gulp.watch(src + '/templates/**/*.{swig,json}', ['html']);
});
// build task.
gulp.task('build', ['clean'], function() {
return gulp.start('copy', 'scripts', 'less', 'htmlmin');
});
Namun tidak berfungsi (tidak terpicu) untuk file baru atau yang dihapus. Apakah ada sesuatu yang saya lewatkan?
EDIT : bahkan menggunakan plugin grunt-watch sepertinya tidak berfungsi:
gulp.task('scripts', function() {
return streamqueue(
{ objectMode: true },
gulp.src([
vendor + '/jquery/dist/jquery.min.js',
vendor + '/bootstrap/dist/js/bootstrap.min.js'
]),
gulp.src([
src + '/js/**/*.js'
]).pipe(plugins.uglify())
)
.pipe(plugins.concat(pkg.name + '.min.js'))
.pipe(gulp.dest(dest + '/js/'));
});
gulp.task('watch', ['build'], function () {
plugins.watch({glob: src + '/js/**/*.js'}, function () {
gulp.start('scripts');
});
});
EDIT : Dipecahkan, itu adalah masalah ini . Gumpalan dimulai dengan ./
(itu nilai src
) sepertinya tidak berfungsi ATM.
javascript
node.js
gulp
Gremo
sumber
sumber
gulp-watch
, misalnyagulp.watch('js/**/*.js', {cwd: src}, ['scripts']);
Jawaban:
Sunting: Tampaknya
gulp.watch
tidak berfungsi dengan file baru atau yang dihapus sekarang. Tidak ketika pertanyaan diajukan.Sisa jawaban saya masih tetap:
gulp-watch
biasanya merupakan solusi yang lebih baik karena memungkinkan Anda melakukan tindakan spesifik hanya pada file yang telah dimodifikasi, sementaragulp.watch
hanya memungkinkan Anda menjalankan tugas lengkap. Untuk proyek dengan ukuran yang masuk akal, ini dengan cepat akan menjadi terlalu lambat untuk berguna.Anda tidak melewatkan apa pun.
gulp.watch
tidak berfungsi dengan file baru atau yang dihapus. Ini adalah solusi sederhana yang dirancang untuk proyek-proyek sederhana.Untuk mendapatkan file menonton yang dapat mencari file baru, gunakan yang
gulp-watch
Plugin , yang jauh lebih kuat. Penggunaannya terlihat seperti ini:Secara pribadi, saya merekomendasikan opsi pertama. Ini memungkinkan proses per file yang jauh lebih cepat. Ini bekerja sangat baik selama pengembangan dengan memuat hati selama Anda tidak menggabungkan file apa pun.
Anda dapat membungkus aliran Anda menggunakan perpustakaan saya
lazypipe
, atau cukup menggunakan fungsi danstream-combiner
seperti ini:PEMBARUAN 15 Oktober 2014
Seperti yang ditunjukkan oleh @pkyeck di bawah ini, ternyata rilis versi 1.0
gulp-watch
sedikit mengubah formatnya, jadi contoh di atas seharusnya menjadi:dan
sumber
Keduanya
gulp.watch()
danrequire('gulp-watch')()
akan memicu untuk file baru / dihapus tetapi tidak jika Anda menggunakan direktori absolut. Dalam tes saya, saya tidak menggunakan"./"
untuk direktori relatif BTW.Keduanya tidak akan memicu jika seluruh direktori dihapus.
sumber
./
jalan mereka - sebenarnya sepertinya praktik yang buruk - github.com/floatdrop/gulp-watch/issues/1gulp-watch
bekerja dengan baik untuk memicu pada file baru atau file yang dihapus. Tidak dibutuhkan!gulp.watch
Melakukan hal ini. Menghapus semua./
dari jalur menyelesaikan masalah. Luar biasa.Jika
src
jalur absolut (dimulai dengan/
), kode Anda tidak akan mendeteksi file baru atau yang dihapus. Namun masih ada jalan:Dari pada:
menulis:
dan itu akan berhasil!
sumber
{ cwd: src }
petunjuk adalah solusi saya. Terima kasih banyak!watch
{cwd:'./'}
dan biarkan pola bola itu sepertigulp.watch('src/js/**/*.js', {cwd: './'}, ['scripts']);
Glob harus memiliki direktori basis terpisah yang ditentukan dan lokasi basis itu tidak boleh ditentukan dalam glob itu sendiri.
Jika sudah
lib/*.js
, itu akan terlihat di bawah direktori kerja saat iniprocess.cwd()
Gulp menggunakan Gaze untuk menonton file dan dalam dokumen Gulp API kami melihat bahwa kami dapat meneruskan opsi spesifik Gaze ke fungsi arloji:
gulp.watch(glob[, opts], tasks)
Sekarang dalam dokumen Gaze kita dapat menemukan bahwa dir yang berfungsi saat ini (glob base dir) adalah
cwd
opsi.Yang mengarahkan kita ke jawaban alexk:
gulp.watch('js/**/*.js', {cwd: src}, ['scripts']);
sumber
Saya tahu ini adalah pertanyaan yang lebih tua, tetapi saya pikir saya akan memberikan solusi yang saya temukan. Tidak ada plugin gulp yang saya temukan akan memberi tahu saya tentang file baru atau yang diganti nama. Jadi saya akhirnya membungkus kacamata berlensa dalam fungsi kenyamanan.
Berikut ini contoh bagaimana fungsi itu digunakan:
Saya harus mencatat bahwa gulpStart juga merupakan fungsi kenyamanan yang saya buat.
Dan di sini adalah modul arloji yang sebenarnya.
Cukup sederhana, bukan? Semuanya dapat ditemukan di starter kit gulp saya: https://github.com/chrisdavies/gulp_starter_kit
sumber
utils
folder)Penting untuk dicatat bahwa sepertinya gulp.watch hanya melaporkan file yang diubah dan dihapus pada Windows tetapi mendengarkan file baru dan yang dihapus secara default di OSX:
https://github.com/gulpjs/gulp/issues/675
sumber
Anda harus menggunakan 'gulp-watch' untuk file baru / yang diubah namanya / dihapus alih-alih gulp.watch
sumber