具体的glob模式不匹配后,广泛排除

Specific glob pattern not matching after broad exclude

本文关键字:排除 不匹配 glob 模式      更新时间:2023-09-26

我正在使用Gulp作为构建过程,我最近遇到了一些特定于页面的文件注入问题(通过Gulp -inject fyi)。

一些上下文:我正在抓取所有的HTML文件,然后逐个查看它们,这样我就可以使用它们的文件名将特定的文件包含到glob集合中,例如对于index.html,我有:

[
    'export/assets/js/libs/jquery*.js',    // jQuery first
    'export/assets/js/libs/*.js',          // Followed by all the libs
    'export/assets/js/*.js',               // Followed by any other js file
    '!export/assets/js/view-*.js',         // Excluding all view-* files [see note]
    '!export/assets/**/_*.js',             // Excluding underscore prefixed files
    '!export/assets/js/ie*.js',            // Excluding all IE libs
    'export/assets/js/view-index*.js'      // Including page specific file
]

[note]可能有更多特定于页面的文件,例如:view-profile.jsview-contact.js,但在此迭代中,只能包含view-index.js

上面的集合然后被gulp.src() 'd和处理,只有view-index.js永远不会进入流…

编辑:

我接受了下面的答案,因为它指出我所拥有的不足以实现我的目标。我找到了一个解决方法,我通过export/assets/js/**/*.js并通过gulp-ignore过滤掉我不需要的内容。

由于minimatch不显式支持否定的全局化模式,大多数库实现类似"收集所有否定,现在调用其余的minimatch,现在应用所有否定"的东西。请参阅https://github.com/wearefractal/glob-stream/blob/master/index.js#L28(注:glob-stream被vinyl-fs使用,它被暴露为gulp的src)