gpt4 book ai didi

javascript - 包括/排除 gulp.src 的 glob

转载 作者:搜寻专家 更新时间:2023-10-31 23:35:32 24 4
gpt4 key购买 nike

我正尝试在 gulp 中为我的 javascript concat 构建任务设置一个 glob 数组。目录结构如下:

├── about
│ └── about.js
├── assets
├── contact
├── core
│ ├── navbar
│ │ ├── navbar.js
│ │ └── navbar.test.js
│ ├── routing.js
│ ├── routing.test.js
│ ├── utils.js
│ └── utils.test.js
├── generated
│ ├── footer.js
│ ├── header.js
│ └── templates.js
├── home
├── app.js
└── config.js

文件的顺序很重要:

  1. 生成/header.js
  2. 应用程序.js
  3. 任何 *.js 文件,除了下面的文件
  4. 生成/templates.js
  5. 生成/footer.js

狂野地尝试了各种通配符组合,但通配符对我来说并不强。

var inputFiles = [
'generated/header.js',
'app.js',
'!(generated)**/*.js', // <=---- ???
'generated/templates.js',
'generated/footer.js',
'!**/*.test.js'
];

那么我如何包含所有 *.js 文件,子目录中的文件除外?

谢谢。

最佳答案

我想到的最好的:

var gulp = require('gulp');
var tap = require('gulp-tap');

gulp.task('default', function() {
return gulp.src([
'generated/header.js',
'app.js',
'*.js',
'./!(generated)/**/*.js', // <- All subdirs except 'generated'
'generated/{templates,footer}.js',
'!**/*.test.js',
'!node_modules/**'
]).pipe(tap(function(file) {
console.log(file.path);
}));
});

运行它:

∴ glob-test gulp
[20:07:51] Using gulpfile ~/Desktop/glob-test/gulpfile.js
[20:07:51] Starting 'default'...
/Users/heikki/Desktop/glob-test/generated/header.js
/Users/heikki/Desktop/glob-test/app.js
/Users/heikki/Desktop/glob-test/config.js
/Users/heikki/Desktop/glob-test/gulpfile.js
/Users/heikki/Desktop/glob-test/about/about.js
/Users/heikki/Desktop/glob-test/core/routing.js
/Users/heikki/Desktop/glob-test/core/utils.js
/Users/heikki/Desktop/glob-test/core/navbar/navbar.js
/Users/heikki/Desktop/glob-test/generated/templates.js
/Users/heikki/Desktop/glob-test/generated/footer.js
[20:07:51] Finished 'default' after 326 ms

主要技巧是避免“!”包含文件时 glob 开头的字符。

https://github.com/isaacs/minimatch#comparisons-to-other-fnmatchglob-implementations

“如果模式以 ! 字符开头,则它被取反。”

附言。否定 glob 的放置无关紧要。他们总是在幕后被移到最后。

关于javascript - 包括/排除 gulp.src 的 glob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26563048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com