1.2.5 • Published 6 years ago

gulp-not-supported-file v1.2.5

Weekly downloads
132
License
MIT
Repository
github
Last release
6 years ago

gulp-not-supported-file

npm es2015 license Build Status

Not a Gulp plugin,
but for Gulp plugin developers.
Check the file before process it in your Gulp plugin

js-happiness-style

What is this and why it was created?

Most of Gulp plugins for compiling/rendering static files use through2 for processing. And first step of each code is a testing file
- it is not null
- it is not stream
- it is not ...
And after this checkouts we may work with file.

Little example

const through2 = require('through2');
const PluginError = require('plugin-error');
const PLUGIN_NAME = 'my-plugin';

function myGulpPLugin(options) {
	// process options if need
	// ...
	
	// processing
	return through2.obj(function(file, enc, cb) {
		if (file.isNull()) {
			return cb(null, file);
		}
		
		if (file.isStream()) {
			return cb(new PluginError(PLUGIN_NAME, 'Streaming not supported'));
		}
		
		if (!file.contents.length) {
			return cb(null, file);
		}
		
		// and other if and if
		// ...
		
		// and then work with it
	});
}

I'm tired of writing the same code every time.
So I wrote it once and wrapped it in a tiny module.


How it works

Call this module with your file and with your plugin error handler. Module will return result:

  • false if the file is suitable for work
  • Array if the file failed the test. Array will contain arguments. First of them is text status name of fail and next arguments for through2 callback.

Status list

  • 'isDirectory' - will be error
  • 'isNull' - will be error
  • 'isStream' - will be error
  • 'isEmpty' - skip file
  • 'isUnderscore' - skip file

Usage example

const through2 = require('through2');
const PluginError = require('plugin-error');
const PLUGIN_NAME = 'my-plugin';

const notSupportedFile = require('gulp-not-supported-file');

// ---------------------------
	
// private method plugin error
function pluginError (data, errorOptions) {
	return new PluginError(PLUGIN_NAME, data, errorOptions);
}

// core plugin method
function myGulpPlugin(options) {
	// process options if need
	// ...
	
	// processing
	return through2.obj(function (file, enc, cb) {
		let notSupported = notSupportedFile(file, pluginError);
		
		if (Array.isArray(notSupported)) {
			notSupported.shift();       // or with saving -> let failStatus = notSupported.shift();
			return cb(...notSupported); // or es5 apply -> cb.apply(null, notSupported);
		}
		
		// work with file if passed
		// ...
	});
}

module.exports = myGulpPlugin;

Module also has few options

Options are passed by the third argument and must be an object

let notSupported = notSupportedFile(file, pluginError, options);

noUnderscore

type boolean / default true

File with empty content will be skipped and not using in stream next.

You will receive message in console if it happens
Example of log:

no-empty log example

noEmpty

type boolean / default true

File with empty content will be skipped and not using in stream next.
Return ['isEmpty']
Note! Spaces, tabs and newlines will be treated as empty content.

You will receive message in console if it happens_stream next.
Example of log:

no-empty log example

silent

type boolean / default false

No logs about noEmpty and noUnderscore files


Installing

npm install --save gulp-not-supported-file
# or using yarn cli
yarn add gulp-not-supported-file

Tests

  1. npm test for testing code style and run mocha tests
  2. npm run happiness-fix for automatically fix most of problems with code style

Changelog

Please read CHANGELOG.md

Contributing

Please read CONTRIBUTING.md

1.2.5

6 years ago

1.2.4

6 years ago

1.2.3

6 years ago

1.2.1

6 years ago

1.2.0

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago