Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/stevenmhunt/gulp-detect

Wraps your module-agnostic library code to support CommonJS, RequireJS and standard browser environments.
https://github.com/stevenmhunt/gulp-detect

Last synced: about 1 month ago
JSON representation

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

Awesome Lists containing this project

README

        

# 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.