【问题标题】:gulp.src (glob-stream) positive glob after negative glob kills matchgulp.src (glob-stream) 负 glob 杀死匹配后的正 glob
【发布时间】:2016-03-09 12:45:23
【问题描述】:

我在查看code 时产生了这样的印象,即积极的 glob 只会受到之后出现的消极 glob 的限制。

那是怎么回事

gulp.src([
           '../WebContent/g/css/ng-client.css'
        ],{base: '../WebContent'}).pipe(using()) 

导致ng-client.css 被列出。

虽然

gulp.src([
           '!../WebContent/g/css/*',
           '../WebContent/g/css/ng-client.css'
        ],{base: '../WebContent'}).pipe(using())  

没有列出相同的文件?

我想弄清楚我对那些 glob 流的思考方式有什么问题,这导致我期望第二个代码块也返回文件 - 这不是如何克服这种情况的解决方案,我有看到了类似的建议: Glob / minimatch: how to gulp.src() everything, then exclude folder but keep one file in it

我知道我可以做类似的事情:

gulp.src([
       '!../WebContent/g/css/!(ng-client.css)',
       '../WebContent/g/css/ng-client.css'
    ],{base: '../WebContent'}).pipe(using())  

问题是为什么第二个没有按我的预期返回文件?

【问题讨论】:

    标签: gulp glob


    【解决方案1】:

    这很有趣。

    您对glob-stream 源代码的阅读似乎是正确的。它还与glob-stream 本身的文档相匹配。但是为什么gulp 的行为与预期不同?我认为这是因为您没有运行您一直在阅读的代码。

    即使在全新安装 gulp 时,您也没有使用最新版本的 glob-stream。以下是我刚刚创建的项目中npm list 的相关摘录:

    ├─┬ gulp@3.9.1
    │ └─┬ vinyl-fs@0.3.14
    │   ├─┬ glob-stream@3.1.18
    

    这意味着正在使用glob-stream@3.1.18。您链接的源代码来自glob-stream@5.0.0

    查看 GitHub 上 glob-stream 的版本标签,文档中第一次提到 glob 顺序是在 4.0.1。所以看起来主要版本3.x4.x之间的行为发生了向后不兼容的变化。

    我们可以通过直接运行glob-stream 来检查:

    var gs = require('glob-stream');
    gs.create([
      '!../WebContent/g/css/ng*',
      '../WebContent/g/css/ng-client.css'
    ]).pipe(using());
    

    使用glob-stream@3.1.183.x 的最新版本)运行它不会返回任何文件。使用glob-stream@4.0.0 运行它确实返回ng-client.css 文件。

    让我想知道的是gulp documentation 明确提到了您一直期待的行为。但事实上,运行他们在文档中使用的完全相同的示例代码并不会产生他们声称的结果:

    gulp.src(['client/*.js', '!client/b*.js', 'client/bad.js'])
    

    使用gulp@3.9.1 运行它只会返回client/a.js,而不是client/bad.js

    看起来其他人也遇到了同样的问题。有一个名为gulp-src-ordered-globs 的模块(指的是this a GitHub issue)。使用此模块,您的示例和 Gulp.js 文档中的示例都按预期工作。

    如果你真的想深入了解这一切,最好在 GitHub 或 ask somebody on the Gulp.js Gitter 上打开一个问题。

    【讨论】:

    • 非常感谢。我会按照你的建议看一下 gulp-src-ordered-globs。
    猜你喜欢
    • 2014-12-21
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多