That’s the big issue IMO. It’s easy for one developer to say "if you make money you can pay me a tip". When you have hundreds of dependencies, tracking developers wanting donations is almost a full time job…
If I were npm CEO, I would :
1. Propose the users (the ones using npm install/ci without publishing packages) to create accounts
2. You can put any amount of money on your account ; it will be monthly used to finance the packages you have downloaded that month
3. Developers (the one publishing packages) can flag their packages to be downloadable either publicly, only by registered users or only by paying users
4. Take a small fee
5. Profit
Then do the same with composer, apt, yum, and you have a pretty good coverage of the FLOSS ecosystem and potential monetary contributors just have to monthly fund 4 accounts.
I don’t understand how it hasn’t happened yet.