github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/public/libs/vue-1.0.24/build/build.js (about) 1 var fs = require('fs') 2 var zlib = require('zlib') 3 var rollup = require('rollup') 4 var uglify = require('uglify-js') 5 var babel = require('rollup-plugin-babel') 6 var replace = require('rollup-plugin-replace') 7 var version = process.env.VERSION || require('../package.json').version 8 9 var banner = 10 '/*!\n' + 11 ' * Vue.js v' + version + '\n' + 12 ' * (c) ' + new Date().getFullYear() + ' Evan You\n' + 13 ' * Released under the MIT License.\n' + 14 ' */' 15 16 // update main file 17 var main = fs 18 .readFileSync('src/index.js', 'utf-8') 19 .replace(/Vue\.version = '[\d\.]+'/, "Vue.version = '" + version + "'") 20 fs.writeFileSync('src/index.js', main) 21 22 // CommonJS build. 23 // this is used as the "main" field in package.json 24 // and used by bundlers like Webpack and Browserify. 25 rollup.rollup({ 26 entry: 'src/index.js', 27 plugins: [ 28 babel({ 29 loose: 'all' 30 }) 31 ] 32 }) 33 .then(function (bundle) { 34 return write('dist/vue.common.js', bundle.generate({ 35 format: 'cjs', 36 banner: banner 37 }).code) 38 }) 39 // Standalone Dev Build 40 .then(function () { 41 return rollup.rollup({ 42 entry: 'src/index.js', 43 plugins: [ 44 replace({ 45 'process.env.NODE_ENV': "'development'" 46 }), 47 babel({ 48 loose: 'all' 49 }) 50 ] 51 }) 52 .then(function (bundle) { 53 return write('dist/vue.js', bundle.generate({ 54 format: 'umd', 55 banner: banner, 56 moduleName: 'Vue' 57 }).code) 58 }) 59 }) 60 .then(function () { 61 // Standalone Production Build 62 return rollup.rollup({ 63 entry: 'src/index.js', 64 plugins: [ 65 replace({ 66 'process.env.NODE_ENV': "'production'" 67 }), 68 babel({ 69 loose: 'all' 70 }) 71 ] 72 }) 73 .then(function (bundle) { 74 var code = bundle.generate({ 75 format: 'umd', 76 moduleName: 'Vue' 77 }).code 78 var minified = banner + '\n' + uglify.minify(code, { 79 fromString: true, 80 output: { 81 ascii_only: true 82 } 83 }).code 84 return write('dist/vue.min.js', minified) 85 }) 86 .then(zip) 87 }) 88 .catch(logError) 89 90 function write (dest, code) { 91 return new Promise(function (resolve, reject) { 92 fs.writeFile(dest, code, function (err) { 93 if (err) return reject(err) 94 console.log(blue(dest) + ' ' + getSize(code)) 95 resolve() 96 }) 97 }) 98 } 99 100 function zip () { 101 return new Promise(function (resolve, reject) { 102 fs.readFile('dist/vue.min.js', function (err, buf) { 103 if (err) return reject(err) 104 zlib.gzip(buf, function (err, buf) { 105 if (err) return reject(err) 106 write('dist/vue.min.js.gz', buf).then(resolve) 107 }) 108 }) 109 }) 110 } 111 112 function getSize (code) { 113 return (code.length / 1024).toFixed(2) + 'kb' 114 } 115 116 function logError (e) { 117 console.log(e) 118 } 119 120 function blue (str) { 121 return '\x1b[1m\x1b[34m' + str + '\x1b[39m\x1b[22m' 122 }