If you work on multiple projects, it’s likely you’re running different versions of some tool.
For example, if you have two node projects, one might be running on v12 and another might be running on v16. When you switch between projects, you need to make sure to switch node versions too. Managing separate node versions helps ensure consistency across your environments.
Trying to do this manually is a pain.
It's a common enough use case that version managers became popular. A version manager lets you install multiple versions of the same software and makes it easy to switch between those versions. The most popular version manager for node is nvm (Node Version Manager). There's a good chance you've heard of it or are using it yourself.
nvm is great. I've used it for a long time.
The problem is that it's node specific. What if I want to manage versions for other tools like python, go, lua or elixir? I need something other than nvm to handle those use cases.
I could install a version manager for each tool.
But I think having one universal version manager to handle this makes things easier.
That tool is asdf.
Here are some highlights:
- General purpose version management tool (node, python, etc.)
- Backwards compatible (supports things like .nvmrc)
- Extensible plugin system to support new tools
- One config file (a single .tool-versions file)