96

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

4

1 回答 1

164

当您传入完整路径数组时,每个文件都会独立处理。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(...);
于 2014-01-27T17:17:26.037 回答