oooh https://github.com/wooorm/npm-esm-vs-cjs from @wooorm looks to be an attempt at answering this!