size-limit
Version:
CLI tool for Size Limit
20 lines (17 loc) • 699 B
JavaScript
const UNITS = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
const PARSE_REGEXP = /^([+-]?\d+(?:\.\d+)?) *(?:([kmgtpezy])?(i)?b)?$/i
export function formatBytes(size) {
let power = 0
while (Math.abs(size) >= 1000 ** (power + 1) && power < UNITS.length - 1) {
power += 1
}
return parseFloat((size / 1000 ** power).toFixed(2)) + ' ' + UNITS[power]
}
export function parseBytes(value) {
if (typeof value === 'number') return value
let match = PARSE_REGEXP.exec(value)
if (!match) return null
let [, number, prefix, iec] = match
let power = prefix ? 'kmgtpezy'.indexOf(prefix.toLowerCase()) + 1 : 0
return Math.floor(parseFloat(number) * (iec ? 1024 : 1000) ** power)
}