build-bundle.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. const fs = require('fs')
  2. const chalk = require('chalk')
  3. const mkdirp = require('mkdirp')
  4. const babelify = require('babelify')
  5. const tinyify = require('tinyify')
  6. const browserify = require('browserify')
  7. const exorcist = require('exorcist')
  8. const glob = require('glob')
  9. const 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. const 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((resolve) => {
  21. b.bundle()
  22. .pipe(exorcist(`${bundleFile}.map`))
  23. .pipe(fs.createWriteStream(bundleFile), 'utf8')
  24. .on('error', handleErr)
  25. .on('finish', () => {
  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. // Add BUNDLE-README.MD
  73. methods.push(
  74. fs.promises.copyFile(
  75. `${__dirname}/../BUNDLE-README.md`,
  76. `./packages/uppy/dist/README.md`
  77. )
  78. )
  79. Promise.all(methods).then(() => {
  80. console.info(chalk.yellow('✓ JS bundles 🎉'))
  81. })