클론 직후 노드 버전이 다르면 엔브이엠을 더 만지지 않는다. 미즈 톰엘에 노드와 파이썬을 같이 고정하고, 제트셸은 활성화, 깃허브 액션은 공식 미즈 액션만 둔다. 엔브이알시는 기본으로 안 읽힌다. 한국 맥 홈브류 노드와 겹치는 경로를 개발자, Next.js, 파이썬, 씨아이, API, 깃허브, 백엔드, 워크트리 기준으로 나눈다.
클론 직후 노드 버전이 다르면 엔브이엠을 더 만지지 않습니다. 저장소 루트에 미즈 설정 파일을 두고 노드와 파이썬을 같이 고정합니다. 제트셸에서 한 번 활성화하면 폴더를 들어갈 때마다 그 버전이 뜹니다. 엔브이엠은 엔브이알시만 보고, 파이엔브는 파이썬 버전 파일만 봅니다. 둘을 같이 켜 두면 경로가 두 줄이 됩니다. 저는 12개 사이트에서 노드 메이저가 갈렸고, 홈브류 노드까지 겹치면 어느 바이너리인지 헷갈렸습니다. 워크트리 폴더는 깃 글에, 파이썬 패키지는 유브이 글에 있습니다. 여기는 클론 직후 런타임 칸만 봅니다.
숫자는 2026년 8월 미즈 공식 문서 기준입니다.
버전은 한 파일에만 적는다
노드와 파이썬이 한 저장소에 있으면, 버전은 미즈 설정 파일 하나에만 적습니다. 엔브이알시와 파이썬 버전 파일을 따로 두지 않습니다.
미즈(mise)는 예전에 알티엑스라는 이름이었습니다. 개발 도구 버전, 환경 변수, 작업을 저장소 루트 설정 파일에 모읍니다. 공식 시작 문서는 대화형 셸에는 활성화를, 씨아이와 편집기에는 심을 쓰라고 나눕니다. 일회성 명령은 이그젝만으로도 됩니다. 한국 맥 기본 셸인 제트셸에 홈브류 노드와 엔브이엠을 같이 깔아 둔 날이 많습니다. 저는 Next.js 사이트와 파이썬 스크립트가 한 폴더에 있는 달이 많아서, 엔브이엠(nvm)과 파이엔브(pyenv)를 동시에 켜 두면 경로가 매번 달랐습니다.
도구
기본으로 보는 파일
같이 켜면
남겨 두는 자리
엔브이엠
엔브이알시
경로 앞을 덮음
노드만 쓰는 옛 저장소
파이엔브
파이썬 버전 파일
셸 훅이 또 덮음
파이썬만 쓰는 데이터 저장소
에이에스디에프
툴 버전스
플러그인 설치가 김
이미 플러그인 묶음이 있는 팀
미즈
미즈 톰엘
훅이 하나
노드와 파이썬이 한 저장소
노드만 처음 깔 때는 노드 설치 글의 엔브이엠이면 됩니다. 런타임을 번으로 바꿀지는 번 글입니다. 맥을 처음 열 때는 맥 셋업 글입니다. 오늘은 클론한 뒤 버전이 어긋나는 칸만 고칩니다.
엔브이알시는 기본으로 안 읽습니다 | 미즈는 관용 버전 파일을 꺼 둔 채 옵니다. 노드를 엔브이알시로 읽으려면 설정에 도구 이름을 따로 넣습니다. 저는 새 저장소에는 미즈 톰엘만 둡니다.
엔브이엠과 파이엔브를 같이 켜면 경로가 두 줄이 된다
제트셸 설정에 엔브이엠 로드와 파이엔브 이닛이 같이 있으면, 나중에 켜진 쪽이 경로 앞을 가져갑니다. 어느 바이너리인지 보려면 which 한 줄이 필요합니다.
엔브이엠은 엔브이알시가 있는 폴더에서만 노드를 바꿉니다. 파이엔브는 파이썬 버전 파일이 있는 폴더에서만 파이썬을 바꿉니다. 두 훅이 프롬프트마다 경로를 다시 쌓습니다. 홈브류로 깐 노드가 그 뒤에 남아 있으면, 새 터미널에서 메이저가 또 달라집니다. 저는 파트너십 폼을 고치다가 로컬은 22, 액션은 20이 뜬 적이 있습니다. 원인은 패키지가 아니라 셸 훅 순서였습니다.
미즈 활성화는 프롬프트와 디렉터리 이동 때 경로를 다시 맞춥니다. 공식 문서는 활성화가 심 디렉터리를 경로에서 뺀다고 적습니다. 심과 활성화를 동시에 켜 두지 않습니다. 대화형 제트셸은 활성화만 남깁니다.
미즈를 깔고 제트셸에 활성화를 한 줄 붙인다
# https://mise.jdx.dev/getting-started.html
curl https://mise.run | sh
~/.local/bin/mise --version
# 제트셸. 기본 설치 경로가 ~/.local/bin 이다
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc
# 새 셸을 연 뒤
mise doctor
홈브류로 깔아도 됩니다. 그래도 제트셸에는 활성화 한 줄이 필요합니다. 컬만 실행하고 훅을 안 넣으면, 이그젝으로만 도구가 뜹니다. 닥터 출력이 훅을 못 찾으면 설정 파일을 다시 읽었는지 봅니다. 엔브이엠 로드 줄은 주석 처리합니다. 같은 날 두 훅을 켜 두면 경로가 다시 갈립니다.
엔브이엠은 엔브이알시, 파이엔브는 파이썬 버전 파일만 본다. 미즈는 한 파일에 같이 적는다
미즈 톰엘에 노드와 파이썬을 같이 박는다
저장소 루트에서 유즈를 치면 미즈 톰엘이 생기고, 그 폴더에 들어올 때 적힌 버전이 뜹니다. 인스톨만 하면 설정 파일에는 안 남습니다.
공식 자주 묻는 질문이 이 차이를 분명히 합니다. 인스톨은 내려받기만 합니다. 유즈는 내려받고 설정 파일에 버전을 씁니다. 글로벌 플래그를 붙이면 홈 설정으로 갑니다. 프로젝트 기본값은 저장소 루트 미즈 톰엘입니다. 로컬 전용 값은 미즈 로컬 톰엘에 두고 깃에 올리지 않습니다. 시크릿은 여기에도 적지 않습니다. 그 칸은 시크릿 체크입니다.
저장소 루트에 노드 24와 파이썬 3.13을 고정한다
# https://mise.jdx.dev/
# 저장소 루트
mise use node@24 python@3.13
cat mise.toml
# [tools]
# node = "24"
# python = "3.13"
# 파일을 직접 고쳤으면
mise install
node -v
python --version
공식 홈 예시도 노드 24와 파이썬 3.13을 같이 박습니다. 메이저만 적으면 그 줄 안에서 최신 패치를 받습니다. 패치까지 고정하려면 점 세 개를 적습니다. 업그레이드는 범위 안만 올립니다. 범위를 바꾸려면 범프 플래그가 필요합니다. 파이썬 타입 검사는 파이라이트 글이고, 패키지 락은 유브이 글입니다. 미즈는 인터프리터 칸입니다.
제트셸은 활성화, 액션은 공식 액션이 먼저다
로컬 대화형 셸은 활성화를 씁니다. 깃허브 액션은 공식 미즈 액션이 설치와 캐시를 대신합니다. 워크플로에 셋업 노드를 또 두지 않습니다.
씨아이 문서는 컬로 깐 뒤 인스톨과 이그젝을 쓰는 경로와, 미즈 액션을 쓰는 경로를 같이 적습니다. 액션은 체크아웃 다음에 둡니다. 설치와 캐시가 기본 켜짐입니다. 워크플로에 노드 버전을 한 번 더 적으면 미즈 톰엘과 어긋납니다. 저는 액션 파일에서 셋업 노드를 지우고 미즈 톰엘만 남겼습니다. 오아이디씨와 장기 키는 액션 오아이디씨 글입니다. 여기는 런타임 칸입니다.
깃허브 액션에서 미즈 톰엘 버전으로 테스트를 돌린다
# https://mise.jdx.dev/continuous-integration.html
name: test
on:
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: jdx/mise-action@v3
- run: node -v
- run: npm test
액션 문서 예시는 체크아웃 메이저 6을 씁니다. 미즈 버전을 고정하려면 액션 입력에 버전 칸을 엽니다. 저장소에 미즈 톰엘이 있으면 액션이 그 파일을 읽습니다. 워크플로 안에 톰엘을 다시 쓰면 저장소 파일과 싸웁니다. 봇이 락 파일만 고치는 자리에는 세이프 모드 환경 변수를 켭니다. 세이프 모드는 훅과 템플릿 실행을 거절하고, 버전 조회는 그대로 둡니다.
로컬은 제트셸 활성화. 액션은 공식 미즈 액션. 버전은 저장소 미즈 톰엘 하나다
신뢰하지 않은 설정은 환경 칸을 안 연다
도구 버전 문자열만 있는 파일은 바로 읽힙니다. 환경 칸에 스크립트가 있으면 트러스트를 한 뒤에야 적용됩니다.
공식 트러스트 문서는 안전한 파일을 나눕니다. 최소 버전, 점만 있는 도구 항목, 템플릿 없는 작업은 프롬프트 없이 읽습니다. 환경 지시와 훅, 작업 템플릿은 코드를 실행할 수 있어서 신뢰 표시가 필요합니다. 유즈로 만든 파일은 자동으로 신뢰됩니다. 동료가 올린 파일을 처음 열면 질문이 뜹니다. 씨아이에서 프롬프트를 못 띄우면 언트러스티드 오류가 납니다. 정상적인 모드에서는 인스톨과 이그젝, 런이 활성 설정을 자동으로 믿습니다. 편집기만 연 채 훅이 돌면 질문이 남을 수 있습니다.
환경 칸에 시크릿을 넣지 않습니다. 로컬 파일 읽기는 미즈 로컬 톰엘과 깃이그노어로 나눕니다. 공개 값만 공유 파일에 둡니다. 의존성 봇이 락을 고치는 자리에는 세이프 모드가 먼저입니다. 주 단위 흡수 순서는 디펜더봇 글입니다.
트러스티드 경로를 루트로 열지 않습니다 | 문서에 슬래시 한 칸으로 프롬프트를 끄는 설정이 있습니다. 그 값은 받은 저장소의 훅까지 바로 실행합니다. 저는 저장소마다 트러스트를 누릅니다.
홈브류 노드를 먼저 지운 이유
미즈를 켜도 홈브류 노드가 경로 앞에 있으면 which 결과가 설정 파일과 다릅니다. 전역 노드는 지우고, 기본값은 홈 설정에만 둡니다.
맥 셋업 글은 홈브류와 에프엔엠, 파이엔브를 나란히 적습니다. 그 글은 새 맥을 여는 날입니다. 오늘은 이미 훅이 쌓인 제트셸을 정리하는 날입니다. 저는 홈브류 노드를 지운 뒤에야 미즈 톰엘의 24가 그대로 떴습니다. 워크트리마다 노드 모듈은 다시 깔립니다. 런타임만 미즈가 맞춥니다. 형제 폴더 자체는 깃 워크트리 글입니다.
글로벌 기본은 홈 설정에 메이저 하나만 둡니다. 저장소 파일이 홈 설정보다 앞섭니다. 공식 구성 문서가 디렉터리 우선순위를 그렇게 적습니다. 새 폴더에 파일이 없으면 홈 버전이 뜹니다. 그래서 스크래치 폴더에서 22가 나오는 날이 있습니다. 그 폴더에 유즈를 치거나, 홈 기본을 팀 기본과 맞춥니다.
제 순서는 짧습니다. 컬 또는 홈브류로 미즈를 깝니다. 제트셸에 활성화 한 줄을 붙입니다. 저장소 루트에서 노드와 파이썬을 유즈합니다. which node 와 설정 파일이 같은지 봅니다. 액션 파일에서 셋업 노드를 지우고 공식 미즈 액션만 남깁니다. 엔브이알시는 새 저장소에 만들지 않습니다. 이미 있는 파일은 한 주만 두고 미즈 톰엘로 옮긴 뒤 지웁니다.
패키지 매니저를 유브이나 번으로 바꾸는 일과 이 글을 한 커밋에 묶지 않습니다. 런타임이 먼저입니다. 패키지는 그다음입니다. 오늘 바꿀 것은 훅 한 줄과 설정 파일 한 장입니다.