我对Gulp很新,试图找出如何从glob中排除多个文件...例如,这适用于单个文件:
return gulp.src(['assets/js/src/!(app)*.js'])
但有可能/排除多个文件的语法是什么?例如。 return gulp.src(['assets/js/src/!(app,test)*.js'])
但显然这不起作用......
编辑 - 我稍后在文件app.js&中添加回来。 test.js所以它们被添加到缩小文件的末尾。
e.g。 (这仅适用于单个文件:) return gulp.src(['assets/js/src/!(app)*.js', 'assets/js/src/app.js'])
我正在寻找最终添加多个文件的解决方案,以便我可以控制缩小文件的顺序。此外,重要的是我可以使用glob来捕获将来添加的所有文件,因此我不想明确列出它们。
答案 0 :(得分:1)
在glob中,OR
模式定义为{A,B}
。所以,这应该有效:
gulp.src(['assets/js/src/*.js', '!assets/js/src/*{app,test}*.js'])
答案 1 :(得分:1)
[您在原帖中添加了一些重要信息,完全改变了答案!您应该使用新条件编辑帖子。所以,感谢@dloeda glob否定:
现在您可以尝试gulp-filter
const gulp = require('gulp');
// const uglify = require('gulp-uglify');
const filter = require('gulp-filter');
gulp.task('default', () => {
// Create filter instance inside task function
const f = filter(['assets/js/src/*.js', '!assets/js/src/*{app,test}*.js'], {restore: true});
return gulp.src('src/**/*.js')
// Filter a subset of the files
.pipe(f)
// Run them through a plugin
// .pipe(uglify())
// Bring back the previously filtered out files (optional)
.pipe(f.restore)
.pipe(gulp.dest('dist'));
});
但是,从gulp-filter文档中我不清楚f.restore是在流的末尾添加过滤后的文件还是在src流中的原始位置。如果您发现它没有放在最后,请告诉我,可以通过其他方法修改它。
另请参阅Contra's answer to adding to src如果您使用的是gulp4.0,则很容易添加到src中。
或者,gulp-add-src看起来非常有前途,我刚刚发现它,所以你可以尝试这个替代代码:
var addsrc = require('gulp-add-src');
gulp.task('build', function () {
// start with excluding app.js and test.js
return gulp.src(['assets/js/src/*.js', '!assets/js/src/*{app,test}*.js'])
// .pipe(whatever)
.pipe(addsrc.append('assets/js/src/app.js')) // append app.js to the end of the stream
.pipe(uglify()) // we minify everything
.pipe(gulp.dest('dist')); // and write to dist
});