uv is fantastic, but its package management UX is a mess
Briefly

uv is fantastic, but its package management UX is a mess
uv provides very fast Python tooling and can replace multiple tools with a single binary. Initial project setup and adding dependencies are straightforward. During maintenance, checking for outdated packages feels less convenient than pnpm or Poetry because uv lacks a dedicated outdated command and requires memorizing a longer command. The output can be noisy by showing the full top-level dependency tree even when only a few packages are outdated. uv also differs philosophically on version constraints, which can be risky for production stability compared with pnpm and Poetry defaults that restrict updates within a major version range.
"In my JavaScript projects, if I want to see what needs an update, I run: This gives a clean, concise list of outdated packages, their current version, the latest version, and the version allowed by your constraints. In uv, there is no uv outdated. Instead, you have to memorize the following mouthful: The output is also a problem. It doesn't just show you what is outdated; it shows you your entire top-level dependency tree, with a small annotation next to the ones that have updates available. If you have 50 dependencies and only two are outdated, you still have to scan a 50-line list."
"This is the most significant philosophical departure uv takes from pnpm and Poetry, and it's a dangerous one for production stability. How pnpm/Poetry handle it When you add a package using pnpm add, it writes it to package.json using the caret requirement (^1.23.4). The caret at the beginning means that any 1.x.x version is allowed, but it will not update to 2.0.0. Poetry does the same by default, using a format like >=1.23.4,<2.0.0. I find this less readable than ^1.23.4, but the effect is the same."
"In both cases, updates are safe by default. You can run pnpm update or poetry update every morning and have high confidence that your build "
Read at Loopwerk
Unable to calculate read time
[
|
]