1.0.1 • Published 10 years ago
gulp-library-umd v1.0.1
gulp-library-umd
Gulp plugin for transforming node modules into various flavors of UMD (Universal Module Definition). Wraps files with a specified UMD template.
Supports gulp-sourcemaps! Supports gulp-data!
Templates
gulp-library-umd supports many templates out of the box, including all those provided by UMDjs and gulp-umd
| origin | template | amd | web | cjs | node | notes | 
|---|---|---|---|---|---|---|
| UMDjs | amdWeb.js | X | X | Uses AMD or browser globals to create a module | ||
| UMDjs | amdWebGlobal.js | X | X | Uses AMD or browser globals to create a module. Creates a web global when AMD is used | ||
| UMDjs | commonjsAdapter.js | X | X | Defines a module that works in CommonJS and AMD | ||
| UMDjs | commonjsStrict.js | X | X | X | Uses CommonJS, AMD or browser globals to create a module | |
| UMDjs | commonjsStrictGlobal.js | X | X | X | Uses CommonJS, AMD or browser globals to create a module. Creates a web global when AMD is used | |
| UMDjs | jqueryPlugin.js | X | X | X | X | Uses CommonJS, AMD or browser globals to create a jQuery plugin | 
| UMDjs | nodeAdapter.js | X | X | Defines a module that works in Node and AMD | ||
| UMDjs | returnExports.js | X | X | X | Uses Node, AMD or browser globals to create a module. | |
| UMDjs | returnExportsGlobal.js | X | X | X | Uses Node, AMD or browser globals to create a module. Creates a web global when AMD is used | |
| gulp-umd | amd.js | X | ||||
| gulp-umd | amdCommonWeb.js | X | X | X | ||
| gulp-umd | common.js | X | ||||
| gulp-umd | node.js | X | ||||
| gulp-umd | web.js | X | ||||
| gulp-library-umd | umd.js | X | X | X | X | Simple support for each of the major export platforms | 
| gulp-library-umd | umdGlobal.js | X | X | X | X | Simple support for each of the major export platforms. Creates a web global when AMD is used | 
Usage
var gulp = require('gulp');
var gulpSourceMaps = require('gulp-sourcemaps'); // optional
var gulpData = require('gulp-data'); // optional
var gulpLibraryUmd = require('gulp-library-umd')
gulp.task('build', function () {
  return gulp.src('source.js')
    // optional per-file settings
    .pipe(gulpData(function (file) {
      return {};
    }))
    // optional source map support
    .pipe(gulpSourceMaps.init())
    // ...
    .pipe(gulpLibraryUmd({
      templateName: 'umd',
      require: {
        libA: 'libA',
        libB: {
          name: 'lib-b-default',
          amd: 'lib-b-amd',
          cjs: 'lib-b-cjs',
          node: 'lib-b-node',
          web: 'libBWeb'
        }
      },
      exports: 'result',
      namespace: 'myModuleGlobal'
    }))
    .pipe(gulpSourceMaps.write())
    .pipe(gulp.dest('dist'))
});input: source.js
var result = {
  A: libA,
  B: libB,
  B: libC
};result: dist/source.umd.js
(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module.
    
    define(["libA","lib-b-amd"], factory);
  } else if (typeof module === 'object' && module.exports) {
    // Node. Does not work with strict CommonJS, but
    // only CommonJS-like environments that support module.exports,
    // like Node.
    
    module.exports = factory(require("libA"), require("lib-b-node"));
  } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
    // CommonJs
    
    (function (results) {
      
      for (var key in results) {
        if ({}.hasOwnProperty.call(results, key))
          exports[key] = results[key];
      }
      
    })(factory(require("libA"), require("lib-b-cjs")));
  } else {
   // Browser globals
   
   root.myModuleGlobal = factory(root.libA, root.libBWeb);
  }
}(this, function (libA,libB) {
  var result = {
    A: libA,
    B: libB,
    B: libC
  };
  
  return result;
}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBIiwiZmlsZSI6InNvdXJjZS51bWQuanMiLCJzb3VyY2VSb290IjoiL3NvdXJjZS8iLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVzdWx0ID0ge1xyXG4gIEE6IGxpYkEsXHJcbiAgQjogbGliQixcclxuICBCOiBsaWJDXHJcbn07XHJcbiJdfQ==Options
| name | type | default | description | 
|---|---|---|---|
templateCache | Boolean | true | Cache compiled templates | 
templateName | String | undefined | Name of the template to use. Overrides templatePath | 
templatePath | String | undefined | Full file path of the template to use. Overrides template | 
template | String | undefined | doT.js template source to be compiled and used | 
template | Function | undefined | function which takes a single argument, context, and returns a string | 
modes | Array | ['cjs', 'node', 'amd', 'web'] | List of modes to support. Used when providing distinct libraries for each mode | 
indent | Boolean | true | Indent content according to the specified template | 
rename | Boolean | true | Rename files to include the template name as an extension suffix on the basename. eg, source.js -> source.amd.js | 
require | Object | {} | variable name:library name id mapping of each required library | 
exports | String | exports | Name of the variable to export. In CommonJs, only own properties of this variable will be exported. | 
exports | Array | List of names to exports. In most modes, these will be exported as an object literal with the given properties | |
namespace | String | undefined | Name to use when exporting as a global. Used in web and global modes. If no namespace is provied, one will be generated from the filename | 
Specifying libraries
No libraries
gulpLibraryUmd({ })Identical libraries for each mode
gulpLibraryUmd({ 
  requires: { 
    libA: 'library-a', 
    libB: 'library-b' 
  } 
}) Different libraries for each mode
gulpLibraryUmd({ 
  requires: { 
    libA: {
      name: 'library-a', // used as default name when no alternative is specified for the mode
      web : 'libraryA',  // web globals should be valid identifiers 
      amd : null         // AMD does not require this library
    }
  } 
})Installation
npm install --save-dev gulp-library-data