Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
Get a devDuck
Rubber duck debugging has never been so cute! Get your favorite coding language devDuckBuy Now
Search - "npm level dependencies"
*wants to download some YouTube videos in youtube-dl*
$ youtube-dl --a-bunch-of-options
> Can't download this, sorry.
*realizes that Ubuntu probably has an outdated version like usual*
# apt remove youtube-dl
*Realizes that this steaming pile of shit pulled in some icons and Wayland on a headless server*
# apt autoremove
> 300-something MB cleared
For a command-line tool...
# pip install youtube-dl
# apt install ffmpeg
$ youtube-dl --audio-format mp3 -o "%(title)s.%(ext)s" https://youtube.com/playlist/...
> Sorry mate, a video was removed from this playlist! Let me go ahead and shit the bed on this issue that's been reported several times since 6 years ago.
*finds an issue on GitHub reporting this, add -i option to continue on error*
$ youtube-dl --audio-format mp3 -o "%(title)s.%(ext)s" https://youtube.com/playlist/... -i
> There you go, your .webm files as requested!
But.. I requested .mp3 output? --audio-format mp3, don't you see?
> Oh no you need to add in another option to tell me to actually do that first. --extract-audio, you see?
But why.. why do you need to be told that twice? Oh ffs, fuck it.
Reminds me of robocopy. That shit required me to tell it 25 times what to do and it'd still not do it right as well. And you know what, compared to rsync where -avz works 99% of the time, I hate it.10
npm has to be the single worst package manager on the planet... Trusting devs to use semantic versioning properly and forcing devs to trust authors of dependencies to use it properly is nothing short of insane. The package-lock that is "supposed to be version controlled" causes *constant* merge conflicts. Using shrinkwrap in its place is borderline useless because it Doesn't. Lock. High. Level. Dependencies.
I don't know who designed this, but I want to give them a very bad day for every hour I've spent trying to lock versions correctly on a live project.
Not to mention requiring root by default to install things that can just run whatever they want is ludicrous.3