asdf: The Best Version Manager
What's the best version manager today? asdf.
What is a Version Manager
Manage what? Runtimes. So, I guess it's a runtime version manager.
What's a runtime? A platform you build and/or run your code on, like Node.js, Ruby or Java.
For a version manager, you'd usually be talking about something like "Node.js Version Manager" and get nvm
. Or "Ruby Version Manager" and get rvm
.
In the case of asdf
, you get to manage hundreds of runtimes. See:
❯ asdf plugin list all | wc -l
685
And the best thing: You get a common interface for all of these runtimes. The same commands you'd use to install and use a version of nodejs will be the same commands that you use for python, etc.
Throw away your other version managers, install asdf, and get started.
Commands
asdf
- see all available commands
asdf plugin list all
- see available runtimes
asdf plugin add babashka
- add the ability to install a particular runtime (eg, babashka)
asdf list all babashka
- show all versions of a particular runtime that you could install
asdf install babashka 1.3.184
- install a particular version of your runtime
asdf local babashka 1.3.184
- set a version of the runtime to use in your project (generates a .tool-versions
file)
asdf global babashka 1.3.184
- set a version of the runtime to use globally (in absence of .tool-versions
)
asdf current
- see what runtime versions you're using at the current path
It's a little different than the varied interfaces of other runtime version managers, but once accustomed, you'll get many miles from this one.
Upgrading past 0.16
When upgrading to this 0.16 or beyond, things are a little different for the install. Follow the upgrade steps:
- Download the new
asdf
binary. Put it in your PATH. - Set
export ASDF_DATA_DIR="$HOME/.asdf"
in your.zshrc
- Add asdf shims to your PATH.
export PATH="$ASDF_DATA_DIR/shims:$PATH"
- Remove old config file.
rm "$HOME/.asdf/asdf.sh"