개발 환경 버전 관리, 이제 그만 힘들고 싶어요!
새로운 프로젝트에 참여하거나 팀원들과 협업할 때, 개발 환경 설정은 종종 예상치 못한 복병이 되곤 합니다. 특히 저처럼 기존에 사용하지 않던 NestJS, NextJS 같은 새로운 기술 스택을 도입하는 경우, 팀원 간 Node.js 버전 불일치로 인해 “제 PC에서는 잘 되는데요?” 상황이 발생하기 쉽습니다.
Node.js는 nvm
, Python은 pyenv
, Ruby는 rbenv
… 각 언어/환경마다 버전 관리 도구를 따로 설치하고 사용하는 것도 번거롭습니다. “이 모든 걸 하나의 도구로 깔끔하게 관리할 순 없을까?” 하는 고민 끝에 mise
(이전 이름: rtx)라는 보석 같은 도구를 발견했습니다.
mise: 여러 언어/도구 버전을 하나로!
mise
는 단일 CLI 도구를 통해 다양한 언어와 도구의 버전을 관리할 수 있게 해주는 강력한 도구입니다. 프로젝트 디렉토리별로 필요한 도구와 버전을 .mise.toml
(또는 .tool-versions
) 파일에 명시해두면, 해당 디렉토리에 접근했을 때 mise
가 자동으로 지정된 버전으로 환경을 설정해줍니다.
주요 장점:
- 다중 언어/도구 지원: Node.js, Python, Ruby, Go, Java, Terraform 등 수많은 플러그인을 통해 다양한 도구 지원
- 자동 환경 전환: 디렉토리 이동 시
.mise.toml
파일을 감지하여 자동으로 버전 활성화 - 간편한 설정: TOML 형식의 설정 파일로 직관적인 버전 명시
- 빠른 속도: Rust로 작성되어 기존 쉘 스크립트 기반 도구보다 빠른 성능
🛠️ 설치 및 설정
mise
설치는 매우 간단합니다.
1. 설치:
터미널에 다음 명령어를 입력하여 mise
를 설치합니다.
curl https://mise.run | sh
2. PATH 설정:
설치가 완료되면, 쉘이 mise
명령어를 인식할 수 있도록 PATH 환경 변수에 mise
설치 경로를 추가해야 합니다. 일반적으로 $HOME/.local/bin
에 설치됩니다. 사용 중인 쉘 설정 파일(예: ~/.zshrc
, ~/.bashrc
) 맨 아래에 다음 줄을 추가합니다.
# ~/.zshrc 또는 ~/.bashrc
export PATH="$HOME/.local/bin:$PATH"
파일 저장 후, 터미널을 새로 시작하거나 source ~/.zshrc
(또는 source ~/.bashrc
) 명령을 실행하여 변경 사항을 적용합니다.
3. 쉘 Hook 설정 (자동 환경 활성화):
mise
의 가장 강력한 기능 중 하나인 자동 환경 활성화를 사용하려면 쉘 설정 파일에 hook 스크립트를 추가해야 합니다.
# ~/.zshrc 또는 ~/.bashrc 맨 아래에 추가
eval "$(mise hook-env)"
마찬가지로 터미널을 새로 시작하거나 source
명령으로 변경 사항을 적용합니다. 이제 mise
설정 파일이 있는 디렉토리로 이동하면 자동으로 해당 환경이 활성화됩니다!
기본 사용법
1. 프로젝트 설정 파일 생성 (.mise.toml
):
프로젝트 루트 디렉토리에 .mise.toml
파일을 생성하고, 사용할 도구와 버전을 명시합니다. 예를 들어 Node.js LTS 버전과 pnpm 8.15.4 버전을 사용하려면 다음과 같이 작성합니다.
# .mise.toml
[tools]
node = "lts" # 또는 특정 버전 "20.11.0"
pnpm = "8.15.4"
# python = "3.11" # 다른 도구도 추가 가능
2. 도구 설치 (mise install
):
.mise.toml
파일이 있는 디렉토리에서 다음 명령어를 실행하면, 파일에 명시된 버전의 도구들이 설치됩니다.
mise install
mise
가 필요한 버전을 다운로드하고 설치해줍니다.
3. 버전 확인:
이제 해당 디렉토리에서 각 도구의 버전을 확인해보면 .mise.toml
에 지정한 버전이 활성화된 것을 볼 수 있습니다.
node -v
# 출력 예시: v22.15.0 (lts 버전)
pnpm -v
# 출력 예시: 8.15.4
다른 디렉토리로 이동하면 해당 디렉토리의 설정(또는 전역 설정)에 맞는 버전이 활성화됩니다.
마무리
mise
를 사용하면서 더 이상 팀원들과의 버전 충돌 문제로 골머리를 앓거나, 여러 버전 관리 도구를 오가며 혼란스러워할 필요가 없어졌습니다. 프로젝트별로 필요한 환경을 명확하게 정의하고 자동으로 관리해주니 개발 생산성이 눈에 띄게 향상되었습니다.
여러분도 mise
를 통해 깔끔하고 효율적인 개발 환경을 구축해보시는 건 어떨까요?
읽어주셔서 감사합니다!