包含/排除gulp.src的glob [英] Including/excluding globs for gulp.src

查看:87
本文介绍了包含/排除gulp.src的glob的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试为 gulp 中的javascript concat构建任务设置全局数组.目录结构如下:

I'm trying to setup a glob array for my javascript concat build task in gulp. The directory structure looks as follows:

├── 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. Generated/header.js
  2. app.js
  3. 任何* .js文件,下面的文件除外
  4. generation/templates.js
  5. generate/footer.js

疯狂地尝试了各种通配符组合,但是对我而言,通配符并不强大.

I've wildly tried all kinds of wildcards combination, but the globbing isn't strong with me.

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

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

So how do I include all *.js files except those from a subdirectory?

谢谢.

推荐答案

我想到的最好的方法:

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开头的字符.

The main trick is avoiding the "!" character at the beginning of glob when including files.

https://github.com/isaacs/minimatch#comparisons-到其他fnmatchglob实现

如果模式以!字符开头,则表示否定."

ps.否定的球的放置无关紧要.他们总是被移到幕后.

ps. Placement of the negated globs doesn't matter. They are always moved to the end behind the scenes.

这篇关于包含/排除gulp.src的glob的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆