build-bundle.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. var glob = require('glob')
  9. var path = require('path')
  10. function handleErr (err) {
  11. console.error(chalk.red('✗ Error:'), chalk.red(err.message))
  12. }
  13. function buildBundle (srcFile, bundleFile, { minify = false, standalone = '' } = {}) {
  14. var b = browserify(srcFile, { debug: true, standalone })
  15. if (minify) {
  16. b.plugin(tinyify)
  17. }
  18. b.transform(babelify)
  19. b.on('error', handleErr)
  20. return new Promise(function (resolve, reject) {
  21. b.bundle()
  22. .pipe(exorcist(bundleFile + '.map'))
  23. .pipe(fs.createWriteStream(bundleFile), 'utf8')
  24. .on('error', handleErr)
  25. .on('finish', function () {
  26. if (minify) {
  27. console.info(chalk.green(`✓ Built Minified Bundle [${standalone}]:`), chalk.magenta(bundleFile))
  28. } else {
  29. console.info(chalk.green(`✓ Built Bundle [${standalone}]:`), chalk.magenta(bundleFile))
  30. }
  31. resolve()
  32. })
  33. })
  34. }
  35. mkdirp.sync('./packages/uppy/dist')
  36. mkdirp.sync('./packages/@uppy/robodog/dist')
  37. mkdirp.sync('./packages/@uppy/locales/dist')
  38. const methods = [
  39. buildBundle(
  40. './packages/uppy/bundle.js',
  41. './packages/uppy/dist/uppy.js',
  42. { standalone: 'Uppy' }
  43. ),
  44. buildBundle(
  45. './packages/uppy/bundle.js',
  46. './packages/uppy/dist/uppy.min.js',
  47. { standalone: 'Uppy', minify: true }
  48. ),
  49. buildBundle(
  50. './packages/@uppy/robodog/bundle.js',
  51. './packages/@uppy/robodog/dist/robodog.js',
  52. { standalone: 'Robodog' }
  53. ),
  54. buildBundle(
  55. './packages/@uppy/robodog/bundle.js',
  56. './packages/@uppy/robodog/dist/robodog.min.js',
  57. { standalone: 'Robodog', minify: true }
  58. )
  59. ]
  60. // Build minified versions of all the locales
  61. const localePackagePath = path.join(__dirname, '..', 'packages', '@uppy', 'locales', 'src', '*.js')
  62. glob.sync(localePackagePath).forEach((localePath) => {
  63. const localeName = path.basename(localePath, '.js')
  64. methods.push(
  65. buildBundle(
  66. `./packages/@uppy/locales/src/${localeName}.js`,
  67. `./packages/@uppy/locales/dist/${localeName}.min.js`,
  68. { minify: true }
  69. )
  70. )
  71. })
  72. Promise.all(methods).then(function () {
  73. console.info(chalk.yellow('✓ JS bundles 🎉'))
  74. })