Dependency Hell
ELI5 — The Vibe Check
When your project's packages need different versions of the same thing and everything breaks. Package A needs Library v2, Package B needs Library v1, and they both hate each other. You update one thing and 47 things break. Welcome to modern development.
Real Talk
Dependency hell refers to the frustrating situation where a project's dependencies have conflicting version requirements, circular dependencies, or incompatible transitive dependencies. It's common in ecosystems with deep dependency trees (npm, pip) and is mitigated by lock files, monorepos, and careful version management.
Show Me The Code
# The nightmare:
npm install
# npm WARN peer dep: react@^17 required by package-a
# npm WARN peer dep: react@^18 required by package-b
# npm ERR! ERESOLVE unable to resolve dependency tree
# The usual fix:
npm install --legacy-peer-deps # 🙈
When You'll Hear This
"I'm in dependency hell — two packages need different React versions." / "Lock files exist because of dependency hell."
Related Terms
Dependency
A dependency is a package your project relies on to work. Your app depends on React to render UI, axios to make requests, and dotenv to read config.
Lock File
A lock file is a snapshot of the exact versions of every package your project is using right now.
node_modules
node_modules is the folder where npm dumps all the packages you install. It can grow to hundreds of megabytes instantly and contains thousands of files.
Package
A package is a bundle of code someone else wrote and published so you don't have to reinvent the wheel. Need to parse dates? There's a package for that.
Semver (Semver)
Semver is the numbering system for software versions: MAJOR.MINOR.PATCH.