Skip to content

Commit f2a7c4d

Browse files
committed
Add percent, v1.0.1
1 parent 6c3bf72 commit f2a7c4d

4 files changed

Lines changed: 32 additions & 13 deletions

File tree

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,21 @@ rollup.rollup({/*...*/}).then((bundle) => {
4444
// Results in ...
4545
/*
4646
-----------------------------
47-
Rollup file analysis
47+
Rollup File Analysis
48+
-----------------------------
49+
bundle size: 1.146 MB
4850
-----------------------------
4951
file: \node_modules\html5-history-api\history.js
5052
size: 38.502 KB
53+
percent: 3.36%
5154
dependents: 1
5255
- \app\modules\page.js
5356
-----------------------------
5457
file: \node_modules\pikaday\pikaday.js
5558
size: 34.683 KB
59+
percent: 3.03%
5660
dependents: 1
5761
- \app\helpers\transformer.js
58-
-----------------------------
5962
...
6063
*/
6164
```

index-es6.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const formatBytes = (bytes) => {
1313
if (bytes === 0) return '0 Byte'
1414
let k = 1000
1515
let dm = 3
16-
let sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']
16+
let sizes = ['Bytes', 'KB', 'MB', 'GB']
1717
let i = Math.floor(Math.log(bytes) / Math.log(k))
1818
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]
1919
}
@@ -32,25 +32,33 @@ function formatted (bndl) { return analyze(bndl, true) }
3232

3333
function analyze (bundle, format) {
3434
let deps = {}
35+
let bundleSize = 0
3536
return new Promise((resolve, reject) => {
3637
let modules = bundle.modules.map((m, i) => {
3738
let id = m.id.replace(root, '')
39+
let size = Buffer.byteLength(m.code, 'utf8') || 0
40+
bundleSize += size
3841
m.dependencies.forEach((d) => {
3942
d = d.replace(root, '')
4043
deps[d] = deps[d] || []
4144
deps[d].push(id)
4245
})
43-
return {id, size: Buffer.byteLength(m.code, 'utf8') || 0}
46+
return {id, size}
4447
})
4548
modules.sort((a, b) => b.size - a.size)
4649
if (limit) modules = modules.slice(0, limit)
47-
modules.forEach((m) => { m.dependents = deps[m.id] || [] })
50+
modules.forEach((m) => {
51+
m.dependents = deps[m.id] || []
52+
m.percent = ((m.size / bundleSize) * 100).toFixed(2)
53+
})
4854
if (!format) return resolve(modules)
49-
let heading = `Rollup file analysis\n`
50-
let formatted = `${borderX}${heading}${borderX}`
55+
let heading = `Rollup File Analysis\n`
56+
let displaySize = `${borderX}bundle size: ${formatBytes(bundleSize)}\n`
57+
let formatted = `${borderX}${heading}${displaySize}${borderX}`
5158
modules.forEach((m) => {
5259
formatted += `file:${buf}${m.id}\n`
5360
formatted += `size:${buf}${formatBytes(m.size)}\n`
61+
formatted += `percent:${buf}${m.percent}%\n`
5462
formatted += `dependents:${buf}${m.dependents.length}\n`
5563
m.dependents.forEach((d) => {
5664
formatted += `${tab}-${buf}${d.replace(root, '')}\n`

index.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const formatBytes = (bytes) => {
1515
if (bytes === 0) return '0 Byte'
1616
let k = 1000;
1717
let dm = 3;
18-
let sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
18+
let sizes = ['Bytes', 'KB', 'MB', 'GB'];
1919
let i = Math.floor(Math.log(bytes) / Math.log(k));
2020
return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]
2121
};
@@ -31,25 +31,33 @@ function formatted (bndl) { return analyze(bndl, true) }
3131

3232
function analyze (bundle, format) {
3333
let deps = {};
34+
let bundleSize = 0;
3435
return new Promise((resolve, reject) => {
3536
let modules = bundle.modules.map((m, i) => {
3637
let id = m.id.replace(root, '');
38+
let size = Buffer.byteLength(m.code, 'utf8') || 0;
39+
bundleSize += size;
3740
m.dependencies.forEach((d) => {
3841
d = d.replace(root, '');
3942
deps[d] = deps[d] || [];
4043
deps[d].push(id);
4144
});
42-
return {id, size: Buffer.byteLength(m.code, 'utf8') || 0}
45+
return {id, size}
4346
});
4447
modules.sort((a, b) => b.size - a.size);
4548
if (limit) modules = modules.slice(0, limit);
46-
modules.forEach((m) => { m.dependents = deps[m.id] || []; });
49+
modules.forEach((m) => {
50+
m.dependents = deps[m.id] || [];
51+
m.percent = ((m.size / bundleSize) * 100).toFixed(2);
52+
});
4753
if (!format) return resolve(modules)
48-
let heading = `Rollup file analysis\n`;
49-
let formatted = `${borderX}${heading}${borderX}`;
54+
let heading = `Rollup File Analysis\n`;
55+
let displaySize = `${borderX}bundle size: ${formatBytes(bundleSize)}\n`;
56+
let formatted = `${borderX}${heading}${displaySize}${borderX}`;
5057
modules.forEach((m) => {
5158
formatted += `file:${buf}${m.id}\n`;
5259
formatted += `size:${buf}${formatBytes(m.size)}\n`;
60+
formatted += `percent:${buf}${m.percent}%\n`;
5361
formatted += `dependents:${buf}${m.dependents.length}\n`;
5462
m.dependents.forEach((d) => {
5563
formatted += `${tab}-${buf}${d.replace(root, '')}\n`;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "rollup-analyzer",
3-
"version": "1.0.0",
3+
"version": "1.0.1",
44
"description": "Analyze file sizes of rollup bundled imports",
55
"main": "index.js",
66
"jsnext:main": "index-es6.js",

0 commit comments

Comments
 (0)