
Research
/Security News
Weaponizing Discord for Command and Control Across npm, PyPI, and RubyGems.org
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
gulp-filter
Advanced tools
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.
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.
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.
FAQs
Filter files in a `vinyl` stream
The npm package gulp-filter receives a total of 152,426 weekly downloads. As such, gulp-filter popularity was classified as popular.
We found that gulp-filter demonstrated a not healthy version release cadence and project activity because the last version was released 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.
Research
/Security News
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
Security News
Socket now integrates with Bun 1.3’s Security Scanner API to block risky packages at install time and enforce your organization’s policies in local dev and CI.
Research
The Socket Threat Research Team is tracking weekly intrusions into the npm registry that follow a repeatable adversarial playbook used by North Korean state-sponsored actors.