For libraries above 1-2k lines of code that can be quite complicated (eg. things like database connectors), it starts being reasonable to mold expectations of my app around the library.
Also using coherent large utility libraries is something worthwhile (or was in the past), libs like underscore/lodash, etc.
But composing app from random underdocumented 2 function "libraries" from npm is just pain if you know what you're looking for. 1) you can't trust the code, so 2) you have to read it anyway and reading is often slower than writing
Every so often I try to reach for an npm library, only to find out that it's suboptimal, doesn't handle my edge cases, or just plain worse than the code I would have written.
The last time I tried to do this, I wanted a hash map with custom equality functions on the keys, since JS doesn't have one built-in by default. I searched for about 2 hours and didn't find a single one that actually worked (several claimed to be, but actually didn't work...)
So I wrote my own in about 100 lines. [0]
Data structures and algorithms tend to be really awful on npm.
[0] https://github.com/magcius/noclip.website/blob/master/src/Ha...