2014-01-27 68 views
90

我試圖通過gulp.src我想要處理的文件數組。這是現在的陣列。爲什麼gulp.src不喜歡將完整路徑數組傳遞給文件?

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

我發現雖然gulp.src似乎不喜歡那樣,第三個元素並沒有使它通過到最終目的地。

我發現一切正常,當我介紹一些通配符這樣的:

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

但是,爲什麼?與globbing方式有什麼關係?我GOOGLE了,但無法找到。

也許這不是globbing的預期目的,但它對我來說沒有意義,它應該以這種方式工作。任何人都可以點亮一下嗎?

回答

154

當您傳遞一個完整路徑數組時,每個文件都是獨立處理的。 globbing不知道路徑的根源(實際上,它根據第一個glob猜測)。因此,每個文件都根植於其包含的文件夾中,並且相對路徑爲空。

但是,有一個簡單的解決方案。通過與關鍵base一個對象作爲第二個參數gulp.src,一切都會有正確的相對路徑:

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(...); 
+20

另外:這是不是在所有的一飲而盡文檔中提到,你必須通過點擊[在docs for glob-stream'](https://github.com/wearefractal/glob-stream)來解決這個問題。 – OverZealous

+6

如果路徑不全都具有相同的基礎,該怎麼辦?我有一個類似的問題打開該特定的情況:[咕嚕src不讀取所需的json文件的數組值](http://stackoverflow.com/questions/31579421/gulp-src-not-reading-required-json-files-array - 值) – Andre

+1

同樣的問題從我身邊。我有兩個不同的基礎來完成我需要運行的任務 –

相關問題