9.0.1 • Published 5 months ago

gulp-filter v9.0.1

Weekly downloads
190,507
License
MIT
Repository
github
Last release
5 months ago

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.

@webx/gulpnodewebx-buildeditorconfig-lint-jsmy-gulpak-gulpgenerator-jhipster-moongenerator-jhipster-movecsv2generator-jhipster-movecsv3generator-jhipster-add-demo-csvpraos-briefcase@wwwoda/gulp-tasks@entando/component-generatoruni-app-hybrid-packdialer-reportsvtex-boilerplateslush-vtex-boilerplatedebox-web-coredas-buildthunderbirdproa-gulp2joyer@alotool/alotool-cli@kununu/electrode-archetype-react-app-devkununu-electrode-archetype-react-app-devdaswag-cligulp-simplexueyan-typescript-climagefront-plugin-webfront-end-guideui5-devkit-gulpui5-toolkit-gulp@infinitebrahmanuniverse/nolb-gulp-fes6-libtactile-gulpmoqit@everything-registry/sub-chunk-1807yummy-flow@ftf/gulp-vapp-transform@ftf/piscesweb-server-managerweb-component-fetchweb-acmtc-componentvtexgen-vtex-boilerplatewebdev-toolkitwebapp-gulp-builderwebpack-frontlinewebpack-production-builderwebpack-production-builder-wagzents-cliyworkcli2zarro@gentsagency/gulp-registry@geit/styleswlion-laravel-elixirwo-laravel-elixir-jadeweshopvulcanjs-cliykfe-cliyminiyoteams-build-coreum-packyyl-seed-gulp-requirejszapier-platform-cliunion-elixirunleashvinyl-tasksvinyl-phantomic@gulppress/fonts@gulppress/images@gulppress/scripts@goat-cli/stylesfm-wallefm-site-build@mas.io/mas-cmp-clireact-hammerreact-infinite-scroll-seedreboundjsrise-gulprelaypinrelish-phaser-projectsass-ltr-rtlsc-gulp-taskstmt-helios-ui-bootstrappertorbi.ng2-choices-gamesan-cli-initsan-cli-command-initrump-imagesrsx_prototypetoclassrump-stylesshaft-toolssetrobot-gulpshinjssolemn-clispark-buildsimlife-botsnp-gulp-tasksspeedseed-polymer-starter-kitsmashcast-commonsmashersmashing-dev-tool
9.0.1

5 months ago

9.0.0

6 months ago

8.0.0

9 months ago

7.0.0

3 years ago

6.0.0

5 years ago

5.1.0

6 years ago

5.0.1

7 years ago

5.0.0

7 years ago

4.0.0

8 years ago

3.0.1

9 years ago

3.0.0

9 years ago

2.0.2

9 years ago

2.0.1

9 years ago

2.0.0

9 years ago

1.0.2

10 years ago

1.0.1

10 years ago

1.0.0

10 years ago

0.5.1

10 years ago

0.5.0

10 years ago

0.4.1

10 years ago

0.4.0

10 years ago

0.3.1

10 years ago

0.3.0

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago