browser-builder.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/usr/bin/env node
  2. var path = require('path');
  3. var AWS = require('../index');
  4. var license = [
  5. '// AWS SDK for JavaScript v' + AWS.VERSION,
  6. '// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.',
  7. '// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt'
  8. ].join('\n') + '\n';
  9. function minify(code) {
  10. var uglify = require('uglify-js');
  11. var minified = uglify.minify(code, {fromString: true});
  12. return minified.code;
  13. }
  14. function build(options, callback) {
  15. if (arguments.length === 1) {
  16. callback = options;
  17. options = {};
  18. }
  19. var img = require('insert-module-globals');
  20. img.vars.process = function() { return '{browser:true}'; };
  21. if (options.services) process.env.AWS_SERVICES = options.services;
  22. var browserify = require('browserify');
  23. var brOpts = { basedir: path.resolve(__dirname, '..') };
  24. browserify(brOpts).add('./').ignore('domain').bundle(function(err, data) {
  25. if (err) return callback(err);
  26. var code = (data || '').toString();
  27. if (options.minify) code = minify(code);
  28. code = license + code;
  29. callback(null, code);
  30. });
  31. }
  32. // run if we called this tool directly
  33. if (require.main === module) {
  34. var opts = {
  35. services: process.argv[2] || process.env.SERVICES,
  36. minify: process.env.MINIFY ? true : false
  37. };
  38. build(opts, function(err, code) {
  39. if (err) console.error(err.message);
  40. else console.log(code);
  41. });
  42. }
  43. build.license = license;
  44. module.exports = build;