【问题标题】:Why does gulp.src not like being passed an array of complete paths to files?为什么 gulp.src 不喜欢将完整路径数组传递给文件?
【发布时间】:2014-02-18 15:36:42
【问题描述】:

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

【问题讨论】:

    标签: arrays node.js glob gulp


    【解决方案1】:

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

    【讨论】:

    • 另外:gulp 文档中根本没有提到这一点,您必须点击进入 the docs for glob-stream 才能弄清楚。
    • 如果路径的基数不同怎么办?对于该特定情况,我有一个类似的问题:gulp src not reading required json file's array values
    • 我这边也有同样的问题。我需要运行的任务有两个不同的基础
    • 文件系统中可能总是有一个共同的基础 somewhere 对吧?即使是"/"。如果 gulp 从项目目录的根目录运行,您只需将当前目录指定为基础目录,然后通过管道传输到当前目录。 gulp.src(mixed, {base: "."}).pipe(doStuff).pipe(dest("."))
    猜你喜欢
    • 2014-06-20
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    相关资源
    最近更新 更多