gulp-not-supported-file

1.2.5 • Public • Published

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

Package Sidebar

Install

npm i gulp-not-supported-file

Weekly Downloads

112

Version

1.2.5

License

MIT

Last publish

Collaborators

  • dutchenkooleg