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  }