In addition to Yarn PnP, the folks at npm are still working on tink[0] which is early but useable right now.
[0]: https://blog.npmjs.org/post/178027064160/next-generation-pac...
[0]: https://blog.npmjs.org/post/178027064160/next-generation-pac...
Long-term, stuff like the size of `node_modules` seems very solvable.
Simultaneously with that, I do think that there'd be benefit if some of the larger JS build tools started evaluating their own transitive dependencies and submitting PRs to inline some of the smaller pieces somehow [0].