asdf

asdf — менеджер версий рантаймов.

С его помощью можно заменить nvm, rbenv , pyenv, gvm и ещё массу менеджеров версий одним общим.

Фиксировать версии можно глобально или на каждый проект.

Глобальная фиксация версий происходит в файле ~/.tool-versions и выполняется с помощью команды:

asdf global plugin-name version

Например:

asdf global rust 1.62.1

Наибольшей ценностью обладает возможность фиксации версий для каждого отдельного проекта.

В этом случае файл .tool-versions располагается в корне проекта и версионируется вместе с исходным кодом.

Локальные для проекта версии фиксируются с помощью команды:

asdf local plugin-name version

Например:

asdf local golang 1.16.15

Это даёт возможность всем членам команды автоматически переключаться на конкретную версию рантайма для каждого конкретного проекта.

В моей команде версии рантаймов в локальном окружении каждого разработчика однозначно совпадают с версиями на staging- и production-окружениях.

Это позволяет исключить любые проблемы с обратной совместимостью или использованием в коде проекта недоступных возможностей новых версий языка.

Ссылки