Saya memiliki tugas teguk yang menggabungkan dan menghapus semua file .JS kustom saya (sembarang perpustakaan non-vendor).
Apa yang saya coba lakukan, adalah mengecualikan beberapa file / direktori dari tugas ini (pengontrol dan arahan).
Inilah pohon saya:
- application
- resources
- js
main.js
- vendor
- jquery
- modernzr
- angular
- controllers
- controller1
- controller2
- controller3
- directives
- directives1
- directives2
- directives3
- widgets
- widget1
- widget2
- widget3
- widget4
- modules
- modules1
- modules2
- modules3
- modules4
Ini tegukku
dir = {
app: 'application',
dest: 'dest',
};
config = {
src: {
js: dir.app + '/resources/js'
},
dest: {
js: dir.dest + '/resources/js'
}
};
gulp.task('rjs', function() {
rjs({
baseUrl: config.src.js,
out: 'main.js',
name: 'main',
mainConfigFile: config.src.js + '/main.js',
exclude: [ 'jquery', 'angular']
})
.pipe(prod ? uglify({ mangle: false, outSourceMap: true, compress: { drop_console: true } }) : gutil.noop())
.pipe(gulp.dest(config.dest.js))
.pipe(filesize())
.pipe(dev ? connect.reload() : gutil.noop());
});
gulp.src(['./*.js', '!./node_modules/**'])
) pertama, kemudian teguk abaikanJawaban:
Jawaban cepat
Di src, Anda selalu dapat menentukan file untuk diabaikan menggunakan "!".
Contoh (Anda ingin mengecualikan semua file * .min.js pada folder dan subfolder Anda:
Anda dapat melakukannya juga untuk file individual.
Jawaban yang diperluas:
Diambil dari dokumentasi tegukan:
glob mengacu pada sintaks node-glob atau bisa juga berupa jalur file langsung.
Jadi, melihat ke dokumentasi node-glob kita dapat melihat bahwa ia menggunakan perpustakaan minimatch untuk melakukan pencocokan.
Pada dokumentasi minimatch , mereka menunjukkan hal berikut:
Dan itulah mengapa menggunakan! simbol akan mengecualikan file / direktori dari tugas tegukan
sumber
Negation The intent for negation would be for a pattern starting with ! to match everything that doesn't match the supplied pattern. However, the implementation is weird, and for the time being, this should be avoided. The behavior is deprecated in version 5, and will be removed entirely in version 6.
gulp.src([/*file globs*/], {base:"."})
agar pola glob bekerja dengan benar.Gulp menggunakan micromatch di bawah tenda untuk mencocokkan gumpalan, jadi jika Anda ingin mengecualikan salah satu file .min.js, Anda dapat mencapai hal yang sama dengan menggunakan fitur globbing yang diperluas seperti ini:
Pada dasarnya apa yang dikatakannya adalah: ambil segala sesuatu di setiap level di dalam js yang tidak berakhir dengan * .min.js
sumber