
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
gulp-filter
Advanced tools
Filter files in a
vinylstream
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.
npm install --save-dev gulp-filter
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'));
};
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'));
};
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/'));
};
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;
};
Returns a transform stream with a .restore property.
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));
Type: object
Accepts minimatch options.
Note: Set dot: true if you need to match files prefixed with a dot, for example, .gitignore.
Type: boolean
Default: false
Restore filtered files.
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.
FAQs
Filter files in a `vinyl` stream
The npm package gulp-filter receives a total of 268,051 weekly downloads. As such, gulp-filter popularity was classified as popular.
We found that gulp-filter demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.