Security News
ESLint is Now Language-Agnostic: Linting JSON, Markdown, and Beyond
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
gulp-filter
Advanced tools
The gulp-filter package is a plugin for Gulp, a streaming build system. It allows you to filter files in a vinyl stream based on a given criteria, enabling you to include or exclude files from further processing in your Gulp tasks.
Filtering files by glob patterns
This feature allows you to filter files in a stream using glob patterns. In this example, only JavaScript files are passed through the filter and then written to the 'dist/js' directory.
const gulp = require('gulp');
const filter = require('gulp-filter');
const jsFilter = filter('**/*.js', { restore: true });
gulp.task('scripts', function() {
return gulp.src('src/**/*')
.pipe(jsFilter)
.pipe(gulp.dest('dist/js'))
.pipe(jsFilter.restore);
});
Restoring filtered files
This feature allows you to restore the filtered files back into the stream after processing. In this example, after processing JavaScript files, the rest of the files are written to the 'dist/others' directory.
const gulp = require('gulp');
const filter = require('gulp-filter');
const jsFilter = filter('**/*.js', { restore: true });
gulp.task('scripts', function() {
return gulp.src('src/**/*')
.pipe(jsFilter)
.pipe(gulp.dest('dist/js'))
.pipe(jsFilter.restore)
.pipe(gulp.dest('dist/others'));
});
Filtering files by custom function
This feature allows you to filter files using a custom function. In this example, only JavaScript files containing the string 'use strict' are passed through the filter and then written to the 'dist/strict' directory.
const gulp = require('gulp');
const filter = require('gulp-filter');
const customFilter = filter(function(file) {
return file.contents.toString().indexOf('use strict') !== -1;
});
gulp.task('strict', function() {
return gulp.src('src/**/*.js')
.pipe(customFilter)
.pipe(gulp.dest('dist/strict'));
});
The gulp-if package allows you to conditionally run a Gulp plugin based on a condition. It is similar to gulp-filter in that it can be used to include or exclude files from further processing, but it does so based on a condition rather than a filter.
The gulp-match package is used to match files in a Gulp stream based on a condition. It is similar to gulp-filter in that it can be used to include or exclude files from further processing, but it is more lightweight and only provides matching functionality.
The gulp-ignore package allows you to ignore files in a Gulp stream based on a condition. It is similar to gulp-filter in that it can be used to exclude files from further processing, but it does not provide the ability to restore filtered files back into the stream.
Filter files in a vinyl stream
Enables you to work on a subset of the original files by filtering them using globbing. When you're done and want all the original files back you just call the end function.
Install with npm
npm install --save-dev gulp-filter
var gulp = require('gulp');
var jscs = require('gulp-jscs');
var filter = require('gulp-filter');
gulp.task('default', function () {
gulp.src('src/*.js')
// filter a subset of the files
.pipe(filter('!src/vendor'))
// run them through a plugin
.pipe(jscs())
// bring back the previously filtered out files (optional)
.pipe(filter.end())
.pipe(gulp.dest('dist'));
});
Type: String
|Array
|Function
Accepts a string/array with globbing patterns which are run through minimatch.
If you supply a function you'll get a vinyl file object as the first argument and you're expected to return true/false whether to include the file:
filter(function (file) {
return /unicorns/.test(file.path);
});
Resets the filter and brings back the previously filtered out files.
MIT © Sindre Sorhus
FAQs
Filter files in a `vinyl` stream
The npm package gulp-filter receives a total of 134,467 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.
Security News
ESLint has added JSON and Markdown linting support with new officially-supported plugins, expanding its versatility beyond JavaScript.
Security News
Members Hub is conducting large-scale campaigns to artificially boost Discord server metrics, undermining community trust and platform integrity.
Security News
NIST has failed to meet its self-imposed deadline of clearing the NVD's backlog by the end of the fiscal year. Meanwhile, CVE's awaiting analysis have increased by 33% since June.