Skip to content

Commit

Permalink
Bundle buddy reporter (#4648)
Browse files Browse the repository at this point in the history
* WIP: bundle buddy reporter

* Update BundleBuddyReporter.js

* Add @parcel/reporter-bundle-analyzer to package.json

* Update BundleBuddyReporter.js

* fix lint

Co-authored-by: Jasper De Moor <jasperdemoor@gmail.com>
  • Loading branch information
devongovett and DeMoorJasper authored Jun 3, 2020
1 parent 149c00b commit 2668bee
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 1 deletion.
3 changes: 2 additions & 1 deletion packages/configs/default/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
"reporters": [
"@parcel/reporter-cli",
"@parcel/reporter-dev-server",
"@parcel/reporter-bundle-analyzer"
"@parcel/reporter-bundle-analyzer",
"@parcel/reporter-bundle-buddy"
]
}
1 change: 1 addition & 0 deletions packages/configs/default/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"@parcel/packager-raw-url": "^2.0.0-alpha.3.1",
"@parcel/packager-ts": "^2.0.0-alpha.3.1",
"@parcel/reporter-bundle-analyzer": "^2.0.0-alpha.3.1",
"@parcel/reporter-bundle-buddy": "^2.0.0-alpha.3.1",
"@parcel/reporter-cli": "^2.0.0-alpha.3.1",
"@parcel/reporter-dev-server": "^2.0.0-alpha.3.1",
"@parcel/resolver-default": "^2.0.0-alpha.3.1",
Expand Down
21 changes: 21 additions & 0 deletions packages/reporters/bundle-buddy/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"name": "@parcel/reporter-bundle-buddy",
"version": "2.0.0-alpha.3.1",
"license": "MIT",
"publishConfig": {
"access": "public"
},
"repository": {
"type": "git",
"url": "https://github.com/parcel-bundler/parcel.git"
},
"main": "lib/BundleBuddyReporter.js",
"source": "src/BundleBuddyReporter.js",
"engines": {
"node": ">= 10.0.0",
"parcel": "^2.0.0-alpha.1.1"
},
"dependencies": {
"@parcel/plugin": "^2.0.0-alpha.3.1"
}
}
51 changes: 51 additions & 0 deletions packages/reporters/bundle-buddy/src/BundleBuddyReporter.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// @flow strict-local
import type {NamedBundle} from '@parcel/types';
import {Reporter} from '@parcel/plugin';
import path from 'path';

export default new Reporter({
async report({event, options}) {
if (event.type !== 'buildSuccess' || process.env.BUNDLE_BUDDY == null) {
return;
}

let bundlesByTarget: Map<string, Array<NamedBundle>> = new Map();
for (let bundle of event.bundleGraph.getBundles()) {
if (!bundle.isInline) {
let bundles = bundlesByTarget.get(bundle.target.distDir);
if (!bundles) {
bundles = [];
bundlesByTarget.set(bundle.target.distDir, bundles);
}

bundles.push(bundle);
}
}

for (let [targetDir, bundles] of bundlesByTarget) {
let out = [];

for (let bundle of bundles) {
bundle.traverseAssets(asset => {
let deps = event.bundleGraph.getDependencies(asset);
for (let dep of deps) {
let resolved = event.bundleGraph.getDependencyResolution(dep);
if (!resolved) {
continue;
}

out.push({
source: path.relative(options.projectRoot, asset.filePath),
target: path.relative(options.projectRoot, resolved.filePath),
});
}
});
}

await options.outputFS.writeFile(
`${targetDir}/bundle-buddy.json`,
JSON.stringify(out),
);
}
},
});

0 comments on commit 2668bee

Please sign in to comment.