jsmin-sourcemap

JSMin with sourcemaps!

node-jsmin-sourcemap

JSMin with sourcemaps!

Also available as a grunt plugin!

JSMin is a JavaScript minifier that removes whitespace and comments.

Source maps enables developers to view and interact with minified JavaScript as if it were unminified (providing useful line errors and easier debugging).

When you combine both of these, you get a node module that is your new best debugging friend.

Install the module with: npm install jsmin-sourcemap

The folders in demo are hosted on Plunker for your testing and enjoyment.

JSMin is a standalone function which takes the following format of paramters

/**
 * JSMin + source-map
 * @param {Object} params Parameters to minify and generate sourcemap with
 * @param {String} [params.dest="undefined.js"] Destination for your JavaScript (used inside of sourcemap map)
 * @param {String} [params.srcRoot] Optional root for all relative URLs
 *
 * SINGLE FILE FORMAT
 * @param {String} params.src  File path to original JavaScript (seen when an error is thrown)
 * @param {String} params.code JavaScript to minify
 *
 * MULTI FILE FORMAT
 * @param {Object[]} params.input Array of objects) to minify
 * @param {String} params.input[n].src File path to original JavaScript (seen when an error is thrown)
 * @param {String} params.input[n].code JavaScript to minify
 *
 * @return {Object} retObj
 * @return {String} retObj.code Minified JavaScript
 * @return {Object} retObj.sourcemap Sourcemap of input to minified JavaScript
 */
// Load in jsmin and jQuery 
var jsmin = require('node-jsmin-sourcemap'),
    jquerySrc = fs.readFileSync('jquery.js', 'utf8');
 
// Process the jquery source via jsmin 
var jqueryMinObj = jsmin({'code':jQuerySrc,'src':'jquery.js','dest':'jquery.min.js'});
 
// Minified code is available at 
// jqueryMinObj.code; 
 
// Sourcemap is available at 
// jqueryMinObj.sourcemap; 
// Load in jsmin, jQuery, and underscore 
var jsmin = require('node-jsmin-sourcemap'),
    jquerySrc = fs.readFileSync('jquery.js', 'utf8'),
    underscoreSrc = fs.readFileSync('underscore.js', 'utf8');
 
// Process the jquery amd underscore source via jsmin 
var indexMinObj = jsmin({
      'input': [{
        'code': jQuerySrc,
        'src': 'jquery.js'
      }, {
        'code': underscoreSrc,
        'src': 'underscore.js'
      }],
      'dest':'index.min.js'
    });
 
// Minified code is availabe at 
// indexMinObj.code; 
 
// Sourcemap is availabe at 
// indexMinObj.sourcemap; 

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via grunt and test via npm test.

Support this project and others by twolfson via gittip.

As of Dec 04 2013, Todd Wolfson has released this repository and its contents to the public domain.

It has been released under the UNLICENSE.

Previous to this, it was licensed under the MIT license.