123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- const fs = require('fs')
- const path = require('path')
- const zlib = require('zlib')
- const uglify = require('uglify-js')
- const rollup = require('rollup')
- const configs = require('./configs')
- if (!fs.existsSync('dist')) {
- fs.mkdirSync('dist')
- }
- build(Object.keys(configs).map(key => configs[key]))
- function build (builds) {
- let built = 0
- const total = builds.length
- const next = () => {
- buildEntry(builds[built]).then(() => {
- built++
- if (built < total) {
- next()
- }
- }).catch(logError)
- }
- next()
- }
- function buildEntry (config) {
- const isProd = /min\.js$/.test(config.dest)
- return rollup.rollup(config).then(bundle => {
- const code = bundle.generate(config).code
- if (isProd) {
- var minified = (config.banner ? config.banner + '\n' : '') + uglify.minify(code, {
- fromString: true,
- output: {
- /* eslint-disable camelcase */
- screw_ie8: true,
- ascii_only: true
- /* eslint-enable camelcase */
- }
- }).code
- return write(config.dest, minified, true)
- } else {
- return write(config.dest, code)
- }
- })
- }
- function write (dest, code, zip) {
- return new Promise((resolve, reject) => {
- function report (extra) {
- console.log(blue(path.relative(process.cwd(), dest)) + ' ' + getSize(code) + (extra || ''))
- resolve()
- }
- fs.writeFile(dest, code, err => {
- if (err) return reject(err)
- if (zip) {
- zlib.gzip(code, (err, zipped) => {
- if (err) return reject(err)
- report(' (gzipped: ' + getSize(zipped) + ')')
- })
- } else {
- report()
- }
- })
- })
- }
- function getSize (code) {
- return (code.length / 1024).toFixed(2) + 'kb'
- }
- function logError (e) {
- console.log(e)
- }
- function blue (str) {
- return '\x1b[1m\x1b[34m' + str + '\x1b[39m\x1b[22m'
- }
|