2014-01-27 62 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

同样的问题从我身边。我有两个不同的基础来完成我需要运行的任务 –