Skip to content

stevenmhunt/gulp-detect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gulp-detect

Wraps your module-agnostic library code to support CommonJS, RequireJS and standard browser environments.

Installation

> npm install gulp-detect

Usage

var detect = require('gulp-detect');

gulp.task('build', function() {
    return gulp.src(['./mainFile.js'])
        .pipe(detect('globalVar'))
        .pipe(gulp.dest('./dist'));
});

detect (globalVariable)

  • globalVariable - The name of the global variable to use within your project to add objects to or to set as the default export. The default value is globalObject.

How it works

The gulp-detect module will take your file streams, and wrap them in an Immediately Invoking Function (IIF) to prevent unnecessary entries into window if in the browser. Then, it will add environment detection code which will automatically determine the environment and register then given global variable to either a RequireJS module, a CommonJS module, or the global window object in the browser. Here is a sample of what the transformed file looks like:

(function () {
    var _detectedModuleType;
    if (typeof define === 'function' && define.amd) {
        _detectedModuleType = 'RequireJS';
    }
    else if (typeof module === 'object' && module.exports) {
        _detectedModuleType = 'CommonJS';
    }
    else if (typeof window !== 'undefined') {
        _detectedModuleType = 'Browser';
    }
    else {
        throw 'Error: No browser or module system detected!';
    }
    var YOUR_GLOBAL_NANE_HERE = {};

// your code gets put here.

    switch (_detectedModuleType) {
        case 'RequireJS':
            define(['YOUR_GLOBAL_NANE_HERE'], YOUR_GLOBAL_NANE_HERE);
            break;
        case 'CommonJS':
            module.exports = YOUR_GLOBAL_NANE_HERE;
            break;
        case 'Browser':
            window.YOUR_GLOBAL_NANE_HERE = YOUR_GLOBAL_NANE_HERE;
            break;
   }
})();

Note that anything that you wish to expose across module systems must be registered with the global name provided to the detect() function call.

About

Wraps your module-agnostic library code to support CommonJS, RequireJS and standard browser environments.

Resources

License

Stars

Watchers

Forks

Packages

No packages published