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


94

我正在尝试将需要处理的文件数组传递给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' ]

但为什么?与通配符的工作方式有关吗?我已经用Google搜索,但找不到。

也许这不是实现globbing的预期目的,但对我而言,以这种方式工作并不有意义。谁能给我一些启示?

Answers:


162

当您传递完整路径数组时,每个文件都会被独立处理。全局不知道路径的根在哪里(实际上,它是基于第一个全局的猜测)。因此,每个文件都植根于其包含的文件夹中,并且相对路径为空。

但是,有一个简单的解决方案。将键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(...);

23
另外:gulp文档中根本没有提到这一点,您必须单击以找到文档glob-stream
OverZealous 2014年

9
如果路径的底数不相同怎么办?对于该特定情况,我有一个类似的问题要解决:gulp src无法读取所需的json文件的数组值
Andre

1
我这边也有同样的问题 对于要执行的任务,我有两个不同的依据
辛西娅·桑切斯

4
文件系统中某处可能总有一个共同的基础,对吧?即使是"/"。如果gulp从项目目录的根目录运行,则只需将当前目录指定为基础,然后通过管道将其发送到当前目录。gulp.src(mixed, {base: "."}).pipe(doStuff).pipe(dest("."))
number1311407
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.