Post

Mise로 통합 런타임 버전 관리하기

nvm, gvm, pyenv, SDKMAN과 비교하며 mise 사용법과 장점을 정리합니다

Mise란?

Mise는 여러 프로그래밍 언어 런타임의 버전을 하나의 도구로 통합 관리하는 CLI입니다. Node.js는 nvm, Python은 pyenv, Go는 gvm, Java는 SDKMAN처럼 언어별 도구를 따로 쓰던 방식을 하나의 표준화된 흐름으로 묶어줍니다.

왜 Mise인가

  • 설정 파일 통합: 언어별 설정을 mise.toml 하나로 관리합니다.
  • 프로젝트 단위 자동 전환: global과 프로젝트별 버전을 구분해 자동으로 전환합니다.
  • 환경 변수까지 관리: 런타임 버전과 환경 변수를 한 파일에서 함께 관리합니다.
  • 팀 협업 친화적: mise.toml을 저장소에 두면 동일한 환경을 쉽게 맞춥니다.

설치

macOS (Homebrew)

1
brew install mise

Windows (Chocolatey)

1
choco install mise

Linux / WSL (curl)

1
curl https://mise.run | sh

셸 활성화 설정

설치한 mise를 사용하는 셸에서 활성화합니다.

macOS + zsh (Homebrew 설치 기준)

1
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc

Linux + bash (curl 설치 기준)

1
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc

Windows

다음 경로를 PATH에 추가합니다.

1
<homedir>\AppData\Local\mise\shims

기본 사용 흐름

1) 설치 가능한 버전 확인

mise ls-remote로 설치 가능한 버전을 확인할 수 있습니다.

1
mise ls-remote python | tail -3
1
2
3
3.13.3
3.13.4
3.13.5
1
mise ls-remote node | tail -3
1
2
3
24.2.0
24.3.0
24.4.1

2) 전역(global) 런타임 설정

전역 설정은 --global 옵션으로 지정합니다.

1
mise use -g python@3.13
1
2
mise python@3.13.5 ✓ installed
mise ~/.config/mise/config.toml tools: python@3.13.5
1
mise use -g node@24
1
2
mise node@24.4.1 ✓ installed
mise ~/.config/mise/config.toml tools: node@24.4.1

3) 프로젝트별 런타임 설정

프로젝트 루트에서 mise use를 실행하면 mise.toml에 저장되며, 해당 프로젝트에서만 적용됩니다.

1
2
cd our-project
mise use node@18
1
2
mise node@18.20.8 ✓ installed
mise ~/work/our-project/mise.toml tools: node@18.20.8

4) 적용 확인

1
node -v
1
v18.20.8

5) 설정 파일 확인

전역 설정은 ~/.config/mise/config.toml에 기록됩니다.

1
cat ~/.config/mise/config.toml
1
2
3
[tools]
node = "24"
python = "3.13"

프로젝트 설정은 mise.toml에 기록됩니다.

1
cat mise.toml
1
2
[tools]
node = "18"

6) 활성화된 런타임 목록

현재 활성화된 런타임 목록은 mise ls로 확인합니다.

1
mise ls
1
2
3
4
Tool   Version  Source                         Requested
node   18.20.8  ~/work/our-project/mise.toml   18
node   24.4.1   ~/.config/mise/config.toml     24
python 3.13.5   ~/.config/mise/config.toml     3.13

런타임 관리

제거

특정 버전을 더 이상 쓰지 않을 때는 mise unuse로 비활성화하고, 필요 시 삭제를 선택합니다.

1
mise unuse python@3.12
1
remove core:python@3.12.11 ? Yes No All

완전히 삭제하려면 다음 명령을 씁니다.

1
2
3
mise uninstall python@3.13.5
# 또는
mise rm python@3.13.5
1
mise python@3.13.5 ✓ uninstalled

업그레이드

mise outdated로 새로운 버전이 있는지 확인합니다.

1
mise outdated
1
2
name   requested  current  latest  source
python 3.13       3.13.3   3.13.5  ~/.config/mise/config.toml

mise upgrade로 업그레이드를 진행합니다.

1
2
3
mise upgrade
# 또는
mise up
1
2
mise python@3.13.5 ✓ installed
mise uninstall python@3.13.3 ✓ remove

협업 환경에서의 설치

repository에 mise.toml을 커밋해 두면, clone 후 mise install로 필요한 런타임을 한 번에 설치할 수 있습니다.

1
mise install
1
2
mise python@3.12.11 ✓ installed
mise node@18.20.8 ✓ installed

주의사항!

  • mise use는 global과 프로젝트 설정을 구분하므로, -g/--global 사용 여부를 항상 확인합니다.
  • 팀 협업 시 mise.toml을 repository에 포함하고, CI에서도 mise install을 사용합니다.

IntelliJ에서 Java SDK 자동 감지

IntelliJ 플러그인을 설치하고 mise 경로를 설정하면, Java SDK를 자동으로 감지할 수 있습니다.

플러그인 설치

JetBrains Marketplace의 Mise 플러그인을 설치합니다.

IntelliJ 설정 > mise Settings 설정창에 mise 실행 파일 경로를 지정합니다. 설정이 완료되면 프로젝트의 Java SDK 감지가 자동으로 동작합니다.

alt text

환경 변수 관리

런타임 버전과 함께 환경 변수도 관리할 수 있습니다.

환경변수 등록

mise set 명령어로 환경변수를 등록할 수 있습니다.

1
2
mise set DB_USER=root
mise set DB_PASS=1234
1
2
DB_USER=root
DB_PASS=1234

현재 등록된 환경 변수 확인

mise set 명령어로 현재 설정된 환경변수를 확인할 수 있습니다.

1
mise set
1
2
3
key     value  source
DB_USER root   ~/work/our-project/mise.toml
DB_PASS 1234   ~/work/our-project/mise.toml

환경변수 삭제

mise unset {key} 명령어로 현재 설정된 환경변수를 삭제할 수 있습니다.

1
mise unset DB_PASS
1
removed DB_PASS

환경 변수도 mise.toml에 같이 저장됩니다.

1
2
3
4
5
6
7
[tools]
node = "18"
python = "3.12"

[env]
DB_USER = "root"
DB_PASS = "1234"

정리

Mise는 언어별 런타임 버전 관리 도구를 하나로 통합해 설정 파일과 명령 체계를 단순화합니다. 전역과 프로젝트별 버전을 자동 전환하고, mise.toml을 통한 팀 협업도 수월하게 만듭니다. 여러 언어를 동시에 다루는 개발 환경일수록 Mise의 장점이 크게 체감됩니다.

[출처]

  • https://mise.jdx.dev/
This post is licensed under CC BY 4.0 by the author.