asdf-vm

asdf: Manage Language Runtime Versions with One CLI

asdf manages multiple language runtimes through one CLI and a plugin system. It is useful for developers who need consistent, project-specific tool versions across languages without maintaining a separate version manager for each one.

Stars
25.6k
Forks
944
Stars, last 7 days
+6

Our take

Health score

64/100

How it is scored
Activity
55
Community
83
Issues
47
Pull requests
69

+6 stars in the last 7 days

  • More contributors than 77% of the projects we track
  • Slower to close issues than 92% of the projects we track

Overview

asdf is a command-line version manager for language runtimes. It addresses the overhead of using separate tools and commands for different languages by providing a shared interface and plugin system.

Projects can declare runtime versions in a .tool-versions file, so contributors can use the versions selected for that project. asdf also supports existing version files for some tools, which can help when migrating from other version managers.

Key Features

  • Manage runtime versions for multiple languages through one CLI.
  • Use plugins to add support for languages and tools.
  • Set project-specific versions with .tool-versions.
  • Keep default versions in a global configuration.
  • Switch versions automatically when moving between directories.
  • Recognize existing .node-version, .nvmrc, and .ruby-version files.
  • Provide shell completion for Bash, Zsh, Fish, and Elvish.

Use Cases

  • Developers working across several languages can use one set of version-management commands instead of learning a separate tool for each runtime.
  • Teams can record required runtime versions in project configuration to make development environments more consistent.
  • Contributors can work on projects with different runtime versions and have asdf select versions as they move between directories.
  • Developers migrating from other version managers can use supported Node.js or Ruby version files during the transition.
  • Teams using a less common language can add support through an asdf plugin, if a suitable plugin is available or created.

Getting Started

Start with the Getting Started guide for installation and setup instructions. See the README for project links and contribution details.

Considerations

asdf depends on plugins for runtime support, so available tools and their setup depend on the plugins you choose. The repository describes support for existing version files for Node.js and Ruby; do not assume other version managers' configuration files are recognized. Consult the official documentation for installation requirements and plugin-specific instructions.

Found this useful?

Share it with someone who would like asdf.

Comparisons