mirror of
https://github.com/videojs/video.js.git
synced 2024-11-30 09:06:49 +02:00
49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
/* eslint-disable no-console */
|
|
const fs = require('fs');
|
|
const zlib = require('zlib');
|
|
const filesize = require('filesize');
|
|
const Table = require('cli-table');
|
|
const path = require('path');
|
|
const sh = require('shelljs');
|
|
|
|
// find all js/css files in the dist dir
|
|
// but ignore any files in lang, example, or font directories
|
|
const filepaths = sh
|
|
.find(path.join(__dirname, '..', 'dist', '**', '*.{js,css}'))
|
|
.filter((filepath) => !(/\/(lang|example|font)\//).test(filepath));
|
|
|
|
// map all files that we found into an array of
|
|
// table entries the filepath, file size, and gzip size.
|
|
Promise.all(filepaths.map(function(filepath) {
|
|
return new Promise(function(resolve, reject) {
|
|
const readStream = fs.createReadStream(filepath);
|
|
const writeStream = fs.createWriteStream(filepath + '.gz');
|
|
const gzip = zlib.createGzip();
|
|
|
|
readStream.pipe(gzip).pipe(writeStream).on('close', function() {
|
|
const gzStat = fs.statSync(filepath + '.gz');
|
|
const fileStat = fs.statSync(filepath);
|
|
|
|
fs.unlinkSync(filepath + '.gz');
|
|
|
|
resolve([filepath.split('dist/')[1], filesize(fileStat.size), filesize(gzStat.size)]);
|
|
})
|
|
.on('error', reject);
|
|
});
|
|
})).then(function(lines) {
|
|
// log all the files and there sizes using a cli table
|
|
const table = new Table({
|
|
head: ['filename', 'size', 'gzipped'],
|
|
colAligns: ['left', 'right', 'right'],
|
|
style: {
|
|
border: ['white']
|
|
}
|
|
});
|
|
|
|
table.push.apply(table, lines);
|
|
console.log(table.toString());
|
|
|
|
}).catch(function(err) {
|
|
console.error(err.stack);
|
|
});
|