UNPKG

npm-install-size

Version:

Check the install size of any NPM package before installing it.

51 lines (46 loc) 2.67 kB
import prettyBytes from 'pretty-bytes'; export function printResult(r, error, opts = {}) { if (error) { console.error(`❌ ${r.pkg}: ${error.message}`); return; } if (opts.summarize) { console.log(`📦 ${r.pkg}@${r.version}: ${prettyBytes(r.size)}, ${r.fileCount} files, largest: ${r.largestFile.name} (${prettyBytes(r.largestFile.size)}), est. download: ${r.downloadTime}`); } else { console.log(`📦 ${r.pkg}@${r.version}: ${prettyBytes(r.size)}`); } } export function printTable(results, format) { if (format === 'csv') { console.log('package,version,size_bytes,size,file_count,largest_file,largest_file_size,download_time,error'); for (const r of results) { console.log(`${r.pkg},${r.version || ''},${r.size || ''},${r.size ? prettyBytes(r.size) : ''},${r.fileCount || ''},${r.largestFile?.name || ''},${r.largestFile?.size || ''},${r.downloadTime || ''},${r.error || ''}`); } } else if (format === 'md') { console.log('| Package | Version | Size | Files | Largest File | Largest Size | Download | Error |'); console.log('|---------|---------|------|-------|--------------|-------------|----------|-------|'); for (const r of results) { console.log(`| ${r.pkg} | ${r.version || ''} | ${r.size ? prettyBytes(r.size) : ''} | ${r.fileCount || ''} | ${r.largestFile?.name || ''} | ${r.largestFile?.size ? prettyBytes(r.largestFile.size) : ''} | ${r.downloadTime || ''} | ${r.error || ''} |`); } } } export function printDependencyTree(tree, indent = 0) { const pad = ' '.repeat(indent); console.log(`${pad}- ${tree.name}: ${prettyBytes(tree.size)}`); for (const dep in tree.dependencies) { printDependencyTree(tree.dependencies[dep], indent + 1); } } export function printCompareTable(results) { console.log('| Package | Version | Size | Minified | Gzipped | Files | Largest File | Largest Size |'); console.log('|---------|---------|------|----------|---------|-------|--------------|-------------|'); for (const r of results) { console.log(`| ${r.pkg} | ${r.version || ''} | ${r.size ? prettyBytes(r.size) : ''} | ${r.minified ? prettyBytes(r.minified) : ''} | ${r.gzipped ? prettyBytes(r.gzipped) : ''} | ${r.fileCount || ''} | ${r.largestFile?.name || ''} | ${r.largestFile?.size ? prettyBytes(r.largestFile.size) : ''} |`); } } export function printBadgeMarkdown(pkg, size) { const label = encodeURIComponent(`${pkg} install size`); const sizeStr = encodeURIComponent(prettyBytes(size)); const url = `https://img.shields.io/badge/${label}-${sizeStr}-blue`; console.log(`![${pkg} install size](${url})`); }