gulp-filter v9.0.1
gulp-filter
Filter files in a
vinyl
stream
Enables you to work on a subset of the original files by filtering them using glob patterns. When you're done and want all the original files back, you just use the restore
stream.
Install
npm install --save-dev gulp-filter
Usage
Filter only
You may want to just filter the stream content:
import gulp from 'gulp';
import uglify from 'gulp-uglify';
import filter from 'gulp-filter';
export default () => {
// Create filter instance inside task function
const f = filter(['**', '!*src/vendor']);
return gulp.src('src/**/*.js')
// Filter a subset of the files
.pipe(f)
// Run them through a plugin
.pipe(uglify())
.pipe(gulp.dest('dist'));
};
Restoring filtered files
import gulp 'gulp';
import uglify 'gulp-uglify';
import filter 'gulp-filter';
export default () => {
// Create filter instance inside task function
const f = filter(['**', '!*src/vendor'], {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'));
};
Multiple filters
By combining and restoring different filters you can process different sets of files with a single pipeline.
import gulp from 'gulp';
import less from 'gulp-less';
import concat from 'gulp-concat';
import filter from 'gulp-filter';
export default () => {
const jsFilter = filter('**/*.js', {restore: true});
const lessFilter = filter('**/*.less', {restore: true});
return gulp.src('assets/**')
.pipe(jsFilter)
.pipe(concat('bundle.js'))
.pipe(jsFilter.restore)
.pipe(lessFilter)
.pipe(less())
.pipe(lessFilter.restore)
.pipe(gulp.dest('out/'));
};
Restore as a file source
You can restore filtered files in a different place and use it as a standalone source of files (ReadableStream). Setting the passthrough
option to false
allows you to do so.
import gulp 'gulp';
import uglify 'gulp-uglify';
import filter 'gulp-filter';
export default () => {
const f = filter(['**', '!*src/vendor'], {restore: true, passthrough: false});
const stream = gulp.src('src/**/*.js')
// Filter a subset of the files
.pipe(f)
// Run them through a plugin
.pipe(uglify())
.pipe(gulp.dest('dist'));
// Use filtered files as a gulp file source
f.restore.pipe(gulp.dest('vendor-dist'));
return stream;
};
API
filter(pattern, options?)
Returns a transform stream with a .restore property.
pattern
Type: string | string[] | Function
Accepts a string/array with globbing patterns which are run through multimatch.
If you supply a function, you'll get a vinyl
file object as the first argument and you're expected to return a boolean of whether to include the file:
filter(file => /unicorns/.test(file.path));
options
Type: object
Accepts minimatch
options.
Note: Set dot: true
if you need to match files prefixed with a dot, for example, .gitignore
.
restore
Type: boolean
\
Default: false
Restore filtered files.
passthrough
Type: boolean
\
Default: true
When set to true
, filtered files are restored with a stream.PassThrough
, otherwise, when set to false
, filtered files are restored as a stram.Readable
.
When the stream is a stream.Readable
, it ends by itself, but when it's stream.PassThrough
, you are responsible of ending the stream.
5 months ago
6 months ago
9 months ago
3 years ago
5 years ago
6 years ago
7 years ago
7 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago