Shadow-cljs - Build Reports


Some time ago I started working on some functionality to make builds more inspectable. I was particulary interested in finding out what exactly ended up in my build after optimizations and how many bytes each part contributed.

The functionality has been there for a while now but not exactly easy to use and it was not documented at all. As of [email protected] it is now much easier to quickly generate a report. The report itself generates a standalone HTML file that can be stored separately and requires not running server or external files. It is very useful to do before/after comparisons when trying to optimize certain JS includes.

Inspired by this recent post I uploaded two sample reports showing the difference of (:require ["antd/es/button"]) vs (:require ["antd"]).

The command to generate such a report for the :app build would be:

$ npx shadow-cljs run app output.html

I plan on extending the report with some additional information over time since I also want to be able to quickly tell why something ended up in a build, ie. who included it.