build.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. return write('dist/vuex.js', bundle.generate({
  20. format: 'umd',
  21. banner: banner,
  22. moduleName: 'Vuex'
  23. }).code)
  24. })
  25. .then(function () {
  26. // Standalone Production Build
  27. return rollup.rollup({
  28. entry: 'src/index.js',
  29. plugins: [babel()]
  30. })
  31. })
  32. .then(function (bundle) {
  33. var code = bundle.generate({
  34. format: 'umd',
  35. moduleName: 'Vuex'
  36. }).code
  37. var minified = banner + '\n' + uglify.minify(code, {
  38. fromString: true,
  39. output: {
  40. ascii_only: true
  41. }
  42. }).code
  43. return write('dist/vuex.min.js', minified)
  44. })
  45. .catch(logError)
  46. function write (dest, code) {
  47. return new Promise(function (resolve, reject) {
  48. fs.writeFile(dest, code, function (err) {
  49. if (err) return reject(err)
  50. console.log(blue(dest) + ' ' + getSize(code))
  51. resolve()
  52. })
  53. })
  54. }
  55. function getSize (code) {
  56. return (code.length / 1024).toFixed(2) + 'kb'
  57. }
  58. function logError (e) {
  59. console.log(e)
  60. }
  61. function blue (str) {
  62. return '\x1b[1m\x1b[34m' + str + '\x1b[39m\x1b[22m'
  63. }