asdf

asdf

Manage multiple runtime versions with a single CLI tool

프로젝트별로 사용하는 언어의 버전이 다른 경우 다양한 언어별 버전 매니저를 사용합니다. Go는 gvm, Node.js는 nvm, ruby는 rbenv를 주로 사용합니다.

다양한 버전 매니저를 하나의 도구로 사용할 수 있는 것이 asdf입니다.

동일한 방식(명령어)으로 버전을 관리할 수 있고 실제 내부 구현은 nvm, rbenv를 그대로 쓰기 때문에 안정적입니다.

.tools-version으로 프로젝트별 버전을 관리할 수 있어 협업할때도 편리합니다.

특징

  • asdf 명령어 하나로 여러 언어의 버전을 관리할 수 있음
  • global 또는 프로젝트(local)별 사용 언어 버전을 지정할 수 있음
  • plugin 방식을 사용하여 여러가지 프로그램(terraform등..)을 지원함
    • 이런 프로그램도 지원할까? -> 있음;

설치하기

1# install dependencies
2brew install coreutils curl git
3
4# install asdf
5brew install asdf
6
7# add to shell
8echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ~/.bash_profile

OS별, shell 별 자세한 설치는 여기서 확인하세요.

사용방법

  1. asdf를 설치한다.
  2. 언어별 플러그인을 설치한다.
  3. 플러그인 설치 후 원하는 버전을 설치한다.
  4. 프로젝트별로 사용하는 버전을 지정한다.
1# nodejs & yarn 사용하는 경우
2# plugin 설치하고
3asdf plugin add nodejs
4asdf plugin add yarn
5# 원하는 버전 설치하고
6asdf install nodejs 16.3.0
7asdf install yarn 1.22.10
8# 프로젝트 설정
9asdf local nodejs 14.16.0
10asdf local yarn 1.22.10
11# 디렉토리에 .tools-version 파일로 관리
12nodejs 14.16.0
13# 다른 버전 확인하기 (리스트중에서 선택하여 install)
14asdf list-all nodejs

플러그인 관리

1# 추가
2asdf plugin add <name> <git-url>
3# asdf plugin add elm https://github.com/vic/asdf-elm
4
5# 조회
6asdf plugin list
7
8# 업데이트
9asdf plugin update --all
10asdf plugin update <name>
11# asdf plugin update erlang
12
13# 삭제
14asdf plugin remove <name>
15# asdf plugin remove erlang

플러그인 별로 설치방법이 조금씩 상이합니다. 해당 저장소의 내용을 자세하게 읽고 정해진 방식으로 설치합니다.

주요 플러그인

언어저장소
gokennyp/asdf-golang
Javahalcyon/asdf-java
Node.jsasdf-vm/asdf-nodejs
Yarntwuni/asdf-yarn
Pythondanhper/asdf-python
Rubyasdf-vm/asdf-ruby
TerraformBanno/asdf-hashicorp

전체 플러그인 목록

버전 관리

1# 설치
2asdf install <name> <version>
3# asdf install erlang 17.3
4
5# 설치 버전 확인
6asdf list <name>
7# asdf list erlang
8
9# 전체 설치가능한 버전 확인
10asdf list all <name>
11# asdf list all erlang
12
13# 버전 지정
14asdf global <name> <version> [<version>...]
15asdf shell <name> <version> [<version>...]
16asdf local <name> <version> [<version>...] # 프로젝트별로 관리할 때 사용
17
18# 삭제
19asdf uninstall <name> <version>
20# asdf uninstall erlang 17.3

댓글