2
0
mirror of https://github.com/tenrok/axios.git synced 2026-05-15 11:59:42 +03:00
Files
axios/bin/pr.js
T

43 lines
1.1 KiB
JavaScript

import Handlebars from "handlebars";
import fs from "fs/promises";
import prettyBytes from 'pretty-bytes';
import {gzipSize} from 'gzip-size';
import {getBlobHistory} from './repo.js';
const generateFileReport = async (files) => {
const stat = {};
for(const [name, file] of Object.entries(files)) {
const commits = await getBlobHistory(file);
stat[file] = {
name,
size: (await fs.stat(file)).size,
path: file,
gzip: await gzipSize(String(await fs.readFile(file))),
commits,
history: commits.map(({tag, size}) => `${prettyBytes(size)} (${tag})`).join(' ← ')
}
}
return stat;
}
const generateBody = async ({files, template = './templates/pr.hbs'} = {}) => {
const data = {
files: await generateFileReport(files)
};
Handlebars.registerHelper('filesize', (bytes)=> prettyBytes(bytes));
return Handlebars.compile(String(await fs.readFile(template)))(data);
}
console.log(await generateBody({
files: {
'Browser build (UMD)' : './dist/axios.min.js',
'Browser build (ESM)' : './dist/esm/axios.min.js',
}
}));