Skip to content

Plugins

Plugins are how asdf knows to handle different tools like Node.js, Ruby, Elixir etc.

See Creating Plugins for the plugin API used to support more tools.

Add

Add plugins via their Git URL:

shell
asdf plugin add <name> <git-url>
# asdf plugin add elm https://github.com/vic/asdf-elm
asdf plugin add <name> <git-url>
# asdf plugin add elm https://github.com/vic/asdf-elm

or via the short-name association in the plugins repository:

shell
asdf plugin add <name>
# asdf plugin add erlang
asdf plugin add <name>
# asdf plugin add erlang

Recommendation

Prefer the longer git-url method as it is independent of the short-name repo.

List Installed

shell
asdf plugin list
# asdf plugin list
# java
# nodejs
asdf plugin list
# asdf plugin list
# java
# nodejs
shell
asdf plugin list --urls
# asdf plugin list
# java            https://github.com/halcyon/asdf-java.git
# nodejs          https://github.com/asdf-vm/asdf-nodejs.git
asdf plugin list --urls
# asdf plugin list
# java            https://github.com/halcyon/asdf-java.git
# nodejs          https://github.com/asdf-vm/asdf-nodejs.git

List All in Short-name Repository

shell
asdf plugin list all
asdf plugin list all

See Plugins Shortname Index for the entire short-name list of plugins.

Update

shell
asdf plugin update --all
asdf plugin update --all

If you want to update a specific package, just say so.

shell
asdf plugin update <name>
# asdf plugin update erlang
asdf plugin update <name>
# asdf plugin update erlang

This update will fetch the latest commit on the default branch of the origin of the plugin repository. Versioned plugins and updates are currently being developed (#916)

Remove

bash
asdf plugin remove <name>
# asdf plugin remove erlang
asdf plugin remove <name>
# asdf plugin remove erlang

Removing a plugin will remove all installations of the tool made with the plugin. This can be used as a shorthand for cleaning/pruning many unused versions of a tool.

Syncing the asdf Short-name Repository

The short-name repo is synced to your local machine and periodically refreshed. This method to determine a sync is as follows:

  • sync events are triggered by commands:
    • asdf plugin add <name>
    • asdf plugin list all
  • if configuration option disable_plugin_short_name_repository is set to yes, then sync is aborted early. See the asdf config docs for more.
  • if there has not been a synchronization in the last X minutes then the sync will occur.
    • X defaults to 60, but can be configured in your .asdfrc via the plugin_repository_last_check_duration option. See the asdf config docs for more.