首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包括/不包括gulp.src的全球

包括/不包括gulp.src的全球
EN

Stack Overflow用户
提问于 2014-10-25 13:43:18
回答 1查看 5.5K关注 0票数 3

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

代码语言:javascript
复制
├── 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 er.js
  2. app.js
  3. *.js文件中的任何一个,除了下面的文件
  4. 生成/模板
  5. 生成/footer.js

我试过各种各样的通配符组合,但是球拍对我来说并不强。

代码语言:javascript
复制
var inputFiles = [
  'generated/header.js',
  'app.js',
  '!(generated)**/*.js',    // <=---- ???
  'generated/templates.js',
  'generated/footer.js',
  '!**/*.test.js'
];

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

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-25 16:45:53

我想出的最好的:

代码语言:javascript
复制
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);
    }));
});

运行它:

代码语言:javascript
复制
∴ 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

“如果模式以一个!字符开头,那么它将被否定。”

ps。否定球体的放置并不重要。他们总是在幕后被移到最后。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26563048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档