build-js.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. var fs = require('fs')
  2. var chalk = require('chalk')
  3. var mkdirp = require('mkdirp')
  4. var babelify = require('babelify')
  5. var tinyify = require('tinyify')
  6. var browserify = require('browserify')
  7. var exorcist = require('exorcist')
  8. function handleErr (err) {
  9. console.error(chalk.red('✗ Error:'), chalk.red(err.message))
  10. }
  11. function buildBundle (srcFile, bundleFile, { minify = false, standalone = '' } = {}) {
  12. var b = browserify(srcFile, { debug: true, standalone })
  13. if (minify) {
  14. b.plugin(tinyify)
  15. }
  16. b.transform(babelify)
  17. b.on('error', handleErr)
  18. return new Promise(function (resolve, reject) {
  19. b.bundle()
  20. .pipe(exorcist(bundleFile + '.map'))
  21. .pipe(fs.createWriteStream(bundleFile), 'utf8')
  22. .on('error', handleErr)
  23. .on('finish', function () {
  24. if (minify) {
  25. console.info(chalk.green(`✓ Built Minified Bundle [${standalone}]:`), chalk.magenta(bundleFile))
  26. } else {
  27. console.info(chalk.green(`✓ Built Bundle [${standalone}]:`), chalk.magenta(bundleFile))
  28. }
  29. resolve()
  30. })
  31. })
  32. }
  33. mkdirp.sync('./packages/uppy/dist')
  34. mkdirp.sync('./packages/@uppy/robodog/dist')
  35. Promise.all([
  36. buildBundle(
  37. './packages/uppy/bundle.js',
  38. './packages/uppy/dist/uppy.js',
  39. { standalone: 'Uppy' }
  40. ),
  41. buildBundle(
  42. './packages/uppy/bundle.js',
  43. './packages/uppy/dist/uppy.min.js',
  44. { standalone: 'Uppy', minify: true }
  45. ),
  46. buildBundle(
  47. './packages/@uppy/robodog/bundle.js',
  48. './packages/@uppy/robodog/dist/robodog.js',
  49. { standalone: 'Robodog' }
  50. ),
  51. buildBundle(
  52. './packages/@uppy/robodog/bundle.js',
  53. './packages/@uppy/robodog/dist/robodog.min.js',
  54. { standalone: 'Robodog', minify: true }
  55. )
  56. ]).then(function () {
  57. console.info(chalk.yellow('✓ JS bundles 🎉'))
  58. })