Neden gulp.src dosyalara bir dizi tam yol iletmekten hoşlanmıyor?


94

Gulp.src'ye ilgilenmesini istediğim bir dizi dosya aktarmaya çalışıyorum. Bu, olduğu haliyle dizidir.

['bower_components/jquery/jquery.js',
 'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
 'bower_components/superscrollorama/jquery.superscrollorama.js' ]

Gulp.src'nin bundan hoşlanmadığını ve üçüncü öğenin son hedefe ulaşmamasına rağmen buluyorum.

Bunun gibi bazı joker karakterleri kullandığımda her şeyin yolunda gittiğini gördüm:

['bower_components/**/jquery.js',
 'bower_components/**/js/greensock/TweenMax.min.js',
 'bower_components/**/jquery.superscrollorama.js' ]

Ama neden? Globbingin çalışma şekliyle bir ilgisi var mı? Google'da araştırdım ama bulamıyorum.

Belki de amaçlanan amaç bu değil ama bu şekilde çalışması bana mantıklı gelmiyor. Biri biraz ışık tutabilir mi?

Yanıtlar:


163

Bir dizi tam yol ilettiğinizde, her dosya bağımsız olarak işlenir. Globbing, yolun kökünün nerede olduğunu bilmez (aslında, ilk glob'a dayanarak tahmin eder). Bu nedenle, her dosya içerdiği klasörde köklenir ve göreceli yol boştur.

Ancak bunun kolay bir çözümü var. baseİkinci argüman olarak anahtarı olan bir nesneyi iletin gulp.srcve her şey doğru göreceli yola sahip olacaktır:

return gulp.src(['bower_components/jquery/jquery.js',
                'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
                'bower_components/superscrollorama/jquery.superscrollorama.js' ],
            {base: 'bower_components/'})
        .pipe(...);

23
Ayrıca: Bu, yudum belgelerinde hiç bahsedilmiyor, bunu anlamak için dokümanlaraglob-stream tıklamanız gerekiyor .
OverZealous

9
Ya yolların hepsi aynı temele sahip değilse? Bu özel senaryo için benzer bir sorum var: gulp src gerekli json dosyasının dizi değerlerini okumuyor
Andre

1
benim tarafımdan aynı soru. Çalıştırmam gereken görev için iki farklı
Cynthia Sanchez

4
Muhtemelen dosya sisteminde bir yerlerde her zaman ortak bir taban vardır, değil mi? Öyle olsa bile "/". Eğer gulp proje dizininizin kökünden çalışıyorsa, sadece mevcut dizini temel olarak belirtirsiniz ve boru mevcut dizine yönlendirirsiniz. gulp.src(mixed, {base: "."}).pipe(doStuff).pipe(dest("."))
numaralar1311407
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.