| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 'use strict';var fs = require('fs')  , path = require('path')  , browserify = require('browserify')  , uglify = require('uglify-js');var pkg = process.argv[2]  , standalone = process.argv[3]  , compress = process.argv[4];var packageDir = path.join(__dirname, '..');if (pkg != '.') packageDir = path.join(packageDir, 'node_modules', pkg);var json = require(path.join(packageDir, 'package.json'));var distDir = path.join(__dirname, '..', 'dist');if (!fs.existsSync(distDir)) fs.mkdirSync(distDir);var bOpts = {};if (standalone) bOpts.standalone = standalone;browserify(bOpts).require(path.join(packageDir, json.main), {expose: json.name}).bundle(function (err, buf) {  if (err) {    console.error('browserify error:', err);    process.exit(1);  }  var outputFile = path.join(distDir, json.name);  var uglifyOpts = {    warnings: true,    compress: {},    output: {      preamble: '/* ' + json.name + ' ' + json.version + ': ' + json.description + ' */'    }  };  if (compress) {    var compressOpts = compress.split(',');    for (var i=0, il = compressOpts.length; i<il; ++i) {      var pair = compressOpts[i].split('=');      uglifyOpts.compress[pair[0]] = pair.length < 1 || pair[1] != 'false';    }  }  if (standalone) {    uglifyOpts.sourceMap = {      filename: json.name + '.min.js',      url: json.name + '.min.js.map'    };  }  var result = uglify.minify(buf.toString(), uglifyOpts);  fs.writeFileSync(outputFile + '.min.js', result.code);  if (result.map) fs.writeFileSync(outputFile + '.min.js.map', result.map);  if (standalone) fs.writeFileSync(outputFile + '.bundle.js', buf);  if (result.warnings) {    for (var j=0, jl = result.warnings.length; j<jl; ++j)      console.warn('UglifyJS warning:', result.warnings[j]);  }});
 |