build-js.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. var path = require('path')
  2. var fs = require('fs')
  3. var babelify = require('babelify')
  4. var chalk = require('chalk')
  5. var mkdirp = require('mkdirp')
  6. var glob = require('glob')
  7. var browserify = require('browserify')
  8. // var exec = require('child_process').exec
  9. var exorcist = require('exorcist')
  10. var distPath = './dist'
  11. var srcPath = './src'
  12. function handleErr (err) {
  13. console.error(chalk.red('✗ Error:'), chalk.red(err.message))
  14. }
  15. function buildUppyBundle (minify) {
  16. var src = path.join(srcPath, 'index.js')
  17. var bundleFile = minify ? 'uppy.min.js' : 'uppy.js'
  18. var b = browserify(src, { debug: true, standalone: 'Uppy' })
  19. if (minify) {
  20. b.plugin('minifyify', {
  21. map: bundleFile + '.map',
  22. output: path.join(distPath, bundleFile + '.map')
  23. })
  24. }
  25. b.transform(babelify)
  26. b.on('error', handleErr)
  27. return new Promise(function (resolve, reject) {
  28. if (minify) {
  29. b.bundle()
  30. .pipe(fs.createWriteStream(path.join(distPath, bundleFile), 'utf8'))
  31. .on('error', handleErr)
  32. .on('finish', function () {
  33. console.info(chalk.green('✓ Built Minified Bundle:'), chalk.magenta(bundleFile))
  34. resolve()
  35. })
  36. } else {
  37. b.bundle()
  38. .pipe(exorcist(path.join(distPath, 'uppy.js.map')))
  39. .pipe(fs.createWriteStream(path.join(distPath, bundleFile), 'utf8'))
  40. .on('error', handleErr)
  41. .on('finish', function () {
  42. console.info(chalk.green('✓ Built Bundle:'), chalk.magenta(bundleFile))
  43. resolve()
  44. })
  45. }
  46. })
  47. }
  48. // function copyLocales () {
  49. // var copyCommand = 'cp -R ' + path.join(srcPath, 'locales/') + ' ' + path.join(distPath, 'locales/')
  50. // return new Promise(function (resolve, reject) {
  51. // exec(copyCommand, function (error, stdout, stderr) {
  52. // if (error) {
  53. // handleErr(error)
  54. // reject(error)
  55. // return
  56. // }
  57. // console.info(chalk.green('✓ Copied locales to dist'))
  58. // resolve()
  59. // })
  60. // })
  61. // }
  62. function buildLocale (file) {
  63. return new Promise(function (resolve, reject) {
  64. var fileName = path.basename(file, '.js')
  65. browserify(file)
  66. .transform(babelify)
  67. .on('error', handleErr)
  68. .bundle()
  69. .pipe(fs.createWriteStream('./dist/locales/' + fileName + '.js', 'utf8'))
  70. .on('error', handleErr)
  71. .on('finish', function () {
  72. console.info(chalk.green('✓ Built Locale:'), chalk.magenta(fileName + '.js'))
  73. resolve()
  74. })
  75. })
  76. }
  77. function buildUppyLocales () {
  78. mkdirp.sync('./dist/locales')
  79. var localePromises = []
  80. glob('./src/locales/*.js', function (err, files) {
  81. if (err) console.log(err)
  82. files.forEach(function (file) {
  83. localePromises.push(buildLocale(file))
  84. })
  85. })
  86. return Promise.all(localePromises)
  87. }
  88. mkdirp.sync(distPath)
  89. Promise.all([buildUppyBundle(), buildUppyBundle(true), buildUppyLocales()])
  90. .then(function () {
  91. console.info(chalk.yellow('✓ JS Bundle 🎉'))
  92. })