从Gulp任务中排除文件/目录

我有一个gulp rjs任务连接并uglifies所有我的自定义.JS文件(任何非供应商库)。

我想要做的是从这个任务(控制器和指令)中排除一些文件/目录。

inheritance人我的树:

- application - resources - js main.js - vendor - jquery - modernzr - angular - controllers - controller1 - controller2 - controller3 - directives - directives1 - directives2 - directives3 - widgets - widget1 - widget2 - widget3 - widget4 - modules - modules1 - modules2 - modules3 - modules4 

在这里我的gulp.js

 dir = { app: 'application', dest: 'dest', }; config = { src: { js: dir.app + '/resources/js' }, dest: { js: dir.dest + '/resources/js' } }; gulp.task('rjs', function() { rjs({ baseUrl: config.src.js, out: 'main.js', name: 'main', mainConfigFile: config.src.js + '/main.js', exclude: [ 'jquery', 'angular'] }) .pipe(prod ? uglify({ mangle: false, outSourceMap: true, compress: { drop_console: true } }) : gutil.noop()) .pipe(gulp.dest(config.dest.js)) .pipe(filesize()) .pipe(dev ? connect.reload() : gutil.noop()); }); 

快速回答

在src上,你可以使用“!”来指定要忽略的文件。

示例(您要排除js文件夹和子文件夹中的所有* .min.js文件:

 gulp.src(['js/**/*.js', '!js/**/*.min.js']) 

你也可以为单个文件做。

扩展答案:

从gulp文档中提取:

gulp.src(globs [,options])

发出匹配提供的glob或一系列球体的文件。 返回可以传送给插件的乙烯基文件stream。

glob是指节点glob语法 ,也可以是直接文件path。

所以,查看节点glob文档,我们可以看到它使用minimatch库进行匹配。

在minimatch文档中 ,他们指出了以下内容:

如果模式以一个! 字符,那就否定了。

这就是为什么使用! 符号将从一个吞咽任务中排除文件/目录

Interesting Posts