build.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. process.env.BABEL_ENV = 'production'
  2. var fs = require('fs')
  3. var zlib = require('zlib')
  4. var rollup = require('rollup')
  5. var uglify = require('uglify-js')
  6. var babel = require('rollup-plugin-babel')
  7. var version = process.env.VERSION || require('../package.json').version
  8. var banner =
  9. '/*!\n' +
  10. ' * Vuex v' + version + '\n' +
  11. ' * (c) ' + new Date().getFullYear() + ' Evan You\n' +
  12. ' * Released under the MIT License.\n' +
  13. ' */'
  14. rollup.rollup({
  15. entry: 'src/index.js',
  16. plugins: [babel()]
  17. })
  18. .then(function (bundle) {
  19. var code = bundle.generate({
  20. format: 'umd',
  21. banner: banner,
  22. moduleName: 'Vuex'
  23. }).code
  24. return write('dist/vuex.js', code).then(function () {
  25. return code
  26. })
  27. })
  28. .then(function (code) {
  29. var minified = banner + '\n' + uglify.minify(code, {
  30. fromString: true,
  31. output: {
  32. ascii_only: true
  33. }
  34. }).code
  35. return write('dist/vuex.min.js', minified)
  36. })
  37. .then(function () {
  38. return rollup.rollup({
  39. entry: 'src/plugins/logger.js',
  40. plugins: [babel()]
  41. }).then(function (bundle) {
  42. return write('logger.js', bundle.generate({
  43. format: 'cjs'
  44. }).code)
  45. })
  46. })
  47. .catch(logError)
  48. function write (dest, code) {
  49. return new Promise(function (resolve, reject) {
  50. fs.writeFile(dest, code, function (err) {
  51. if (err) return reject(err)
  52. console.log(blue(dest) + ' ' + getSize(code))
  53. resolve()
  54. })
  55. })
  56. }
  57. function getSize (code) {
  58. return (code.length / 1024).toFixed(2) + 'kb'
  59. }
  60. function logError (e) {
  61. console.log(e)
  62. }
  63. function blue (str) {
  64. return '\x1b[1m\x1b[34m' + str + '\x1b[39m\x1b[22m'
  65. }