browserify.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. var exec = require('child_process').exec;
  2. var path = require('path');
  3. var fs = require('fs');
  4. var mkdirp = require('mkdirp');
  5. var browserify = require('browserify');
  6. var exorcist = require('exorcist');
  7. var ROOT_DIR = path.resolve(__dirname, '..');
  8. var CONFIGURATIONS = {
  9. 'es6': {
  10. standaloneName: 'Promise',
  11. entries: [
  12. path.resolve(ROOT_DIR, 'es6-shim', 'Promise.browserify-es6.js')
  13. ],
  14. outputDir: 'es6-shim',
  15. outputFilename: 'Promise.js'
  16. },
  17. 'when': {
  18. standaloneName: 'when',
  19. entries: [
  20. path.resolve(ROOT_DIR, 'build', 'when.browserify.js')
  21. ],
  22. outputDir: path.join('dist', 'browser'),
  23. outputFilename: 'when.js'
  24. },
  25. 'debug': {
  26. standaloneName: 'when',
  27. entries: [
  28. path.resolve(ROOT_DIR, 'build', 'when.browserify-debug.js')
  29. ],
  30. outputDir: path.join('dist', 'browser'),
  31. outputFilename: 'when.debug.js'
  32. }
  33. };
  34. function revParse(callback) {
  35. exec('git rev-parse HEAD', function(err, stdout, stderr) {
  36. process.stderr.write(stderr);
  37. if (err) {
  38. callback(err);
  39. } else {
  40. callback(null, stdout.replace(/(^\s+)|(\s+$)/g, ''));
  41. }
  42. });
  43. }
  44. var configName = process.argv[2];
  45. var config = CONFIGURATIONS[configName];
  46. if (!config) {
  47. console.error('Cannot find configuration "' + configName + '"');
  48. process.exit(1);
  49. return;
  50. }
  51. mkdirp(config.outputDir, function(mkdirErr) {
  52. if (mkdirErr) {
  53. console.error(mkdirErr);
  54. process.exit(1);
  55. } else {
  56. revParse(function(revParseErr, rev) {
  57. if (revParseErr) {
  58. console.error(revParseErr);
  59. process.exit(1);
  60. } else {
  61. var rootUrl = 'https://raw.githubusercontent.com/cujojs/when/' + rev;
  62. var outputMapFile = path.resolve(ROOT_DIR, config.outputDir, config.outputFilename + '.map');
  63. var outputFile = path.resolve(ROOT_DIR, config.outputDir, config.outputFilename);
  64. browserify({
  65. entries: config.entries
  66. })
  67. .bundle({
  68. standalone: config.standaloneName,
  69. detectGlobals: false,
  70. debug: true
  71. })
  72. .pipe(exorcist(outputMapFile, null, rootUrl, ROOT_DIR))
  73. .pipe(fs.createWriteStream(outputFile));
  74. }
  75. });
  76. }
  77. });