UNPKG

unique-interface

Version:

无UI组件库

73 lines (67 loc) 2.58 kB
const webpack = require("webpack"); const colors = require('colors'); const Table = require('easy-table'); const tasker = require('../tasker.js'); const report = require('../report.js').report; const log = require('../report.js').log; const trigger = require('../report.js').trigger; // const allBuilds = require("./config.js"); const pkg = require("../../package.json"); function buildNext(builds){ const config = builds.shift(); return tasker('Build File: ' + config.output.filename, (resolve, reject) => { webpack(config, (err, stats) => { if(err || stats.hasErrors() || stats.hasWarnings()){ log('Start of Errors: ', 'warn'); if(err){ console.error(err.stack || err); if(err.details)console.error(err.details); } else if(stats.hasErrors()){ stats.toJson().errors.forEach(function(err){ console.error(err); }); } else if(stats.hasWarnings()){ stats.toJson().warnings.forEach(function(warning){ console.warn(warning); }); } log('End of Errors.', 'warn'); reject({ err, stats }); } else { resolve(stats.toJson().assets); } }); }); } function build(builds){ return tasker('Build Project: ' + pkg.name, (resolve, reject) => { let assetsAll = []; let next = function(){ if(builds.length) { buildNext(builds).then(assets => { assetsAll = assetsAll.concat(assets); next(); }).catch(reason => { trigger('build-error'); reject(reason); }); } else { // if(!assetsAll.length)return; let fileInfo = Table.print( assetsAll.map(asset => { let size = ~~(asset.size / 1024); let color = size > 120 ? 'red' : size > 60 ? 'yellow' : 'reset'; return { size: (size + 'kb')[color], file: asset.name[color], } }) ); console.log("Build Files:\n " + fileInfo.split("\n").slice(2, -1).join("\n ")); resolve(); } }; next(); }, 'info'); } module.exports = build;