Dosyaları / dizinleri Gulp görevinden hariç tutma


227

Ben tüm özel .JS dosyaları (herhangi bir satıcı olmayan kütüphaneler) birleştirir ve uglifies gulp rjs görev var.

Ne yapmaya çalışıyorum, bazı görevler / dizinler bu görev (denetleyicileri ve yönergeleri) hariç tutmaktır.

Heres benim ağacım:

 - 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

İşte benim gulp.js

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());

});

1
Yutmayı görmezden gelmeyi denedin mi? npmjs.org/package/gulp-ignore
danbars

1
@ user1655734: gulp-ignore belgeleri ( npmjs.com/package/gulp-ignore ) önce dışlama düzenini ( gulp.src(['./*.js', '!./node_modules/**'])), ardından gulp - ignore'u öneriyor
Jeromy French

Yanıtlar:


527

Hızlı cevap

Src'de her zaman "!" Kullanarak yok sayılacak dosyaları belirtebilirsiniz.

Örnek (js klasörünüzdeki ve alt klasörünüzdeki tüm * .min.js dosyalarını hariç tutmak istiyorsunuz:

gulp.src(['js/**/*.js', '!js/**/*.min.js'])

Tek tek dosyalar için de yapabilirsiniz.

Genişletilmiş cevap:

Yüce belgelerinden alıntı:

gulp.src (globs [, seçenekler])

Verilen glob veya glob dizisiyle eşleşen dosyaları yayar. Eklentilere gönderilebilecek bir Vinil dosya akışı döndürür.

glob, düğüm glob sözdizimini belirtir veya doğrudan bir dosya yolu olabilir.

Bu nedenle, düğüm glob belgelerine bakarak eşleşmesini yapmak için minimatch kütüphanesini kullandığını görebiliriz.

Açık MiniMatch belgelerinde , onlar aşağıdaki işaret:

eğer desen bir ile başlıyorsa! karakter, o zaman reddedilir.

Ve bu yüzden kullanıyor! sembolü dosyaları / dizinleri yutkunma görevinden hariç tutar


11
Bundan kaçınılmamalı mı? Bu düğüm noktası belgelerinden: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.
Bay Oh

2
Kullanmam gerekiyordu: gulp.src([/*file globs*/], {base:"."})glob kalıplarının doğru çalışmasını sağlamak için.
Scott

1
@avcajaraville Cevabınızın tamamen geçerli olduğunu kabul ediyorum. Yorumuma cevap vermeden gönderilen yanıtı doğru şekilde çalıştıramadım. Bunun cevap / soru ile nasıl bir ilgisi olmadığından emin değilim, ama benim için işe yarayan şeyi göndermek istedim.
Scott

1
@MisterOh aslında gulp.src, glob akışını glob-akışına geçiren vinil-fs.src'dir, bu da pozitif globlar için düğüm glob ve negatif globlar için minimatch kullanır, bu nedenle negatif desenler kullanmakta sorun yoktur. Check out burada glob akışı belgeler ve örnek pozitif ve negatif glob desen veya kod bakabilirsiniz .
Kodlama

18
Olumsuzluk bunu yapmanın doğru yoludur. Kusur belgeleri yanlıştı. Ben açık bir konu dokümanlar ile ilgili ve gönderilen PR etti belgelere düzeltilmiş .
Edward Brey

5

Gulp, eşleşen globlar için kaputun altında mikromatch kullanır, bu nedenle .min.js dosyalarından herhangi birini hariç tutmak istiyorsanız, aşağıdakine benzer genişletilmiş bir globbing özelliğini kullanarak bunu elde edebilirsiniz :

src("'js/**/!(*.min).js")

Temel olarak söylediği şey: * .min.js ile bitmeyen js içinde herhangi bir düzeyde her şeyi alın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.