为什么gulp.src不喜欢传递一个完整的文件路径数组?

时间:2014-01-27 17:02:24

标签: arrays node.js glob gulp

我正在尝试将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的预期目的,但它对我来说没有意义,它应该以这种方式工作。任何人都能解释一下吗?

1 个答案:

答案 0 :(得分:159)

传入完整路径数组时,将独立处理每个文件。 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(...);