Tools

mise: quản lý phiên bản Node, Python, Go, biến môi trường và task trong một file

Tóm tắt

mise gom quản lý phiên bản công cụ, biến môi trường theo thư mục và task vào một mise.toml. mise use node@24, mise install, mise run dev. Commit file cấu hình, giữ secret trong .env bị ignore.

Project A cần Node 18, project B cần Node 22 và Python 3.12, project C dùng Go và Terraform phiên bản cố định. Thế là máy dev có nvm, pyenv, goenv, tfenv, mỗi cái một cách cấu hình, cộng thêm direnv cho biến môi trường và Makefile cho lệnh. mise (đọc là "meez") gom ba việc vào một công cụ và một file mise.toml: quản lý phiên bản công cụ dev, biến môi trường theo thư mục, và chạy task. Vào thư mục project là có đúng phiên bản, đúng biến.

Trang GitHub của jdx/mise
Trang GitHub của jdx/mise (ảnh chụp tháng 11/2026)

GitHub: https://github.com/jdx/mise · khoảng 36 nghìn sao · Rust · MIT

Cài đặt

curl -fsSL https://mise.run | sh     # macOS/Linux
brew install mise
winget install jdx.mise              # Windows

# Kích hoạt trong shell (thêm vào ~/.zshrc)
eval "$(mise activate zsh)"

Quản lý phiên bản công cụ

cd my-project
mise use node@24            # cài Node 24 và ghi vào mise.toml của project
mise use [email protected]
mise use -g go@latest       # đặt phiên bản mặc định toàn cục
mise install                # cài mọi công cụ khai báo trong mise.toml (sau khi clone)
mise ls                     # xem công cụ đang dùng và nguồn khai báo
mise exec node@20 -- node --version   # chạy một lần với phiên bản khác

mise đọc được cả file cấu hình của công cụ khác như .tool-versions (asdf), .nvmrc, .python-version, nên chuyển sang dần được mà không phá cấu hình cũ.

Một file cho cả project

# mise.toml
[tools]
node = "24"
python = "3.12"
terraform = "1.9"

[env]
NODE_ENV = "development"
DATABASE_URL = "postgres://localhost:5432/app_dev"
_.file = ".env"              # nạp thêm biến từ .env (không commit file này)

[tasks.dev]
description = "Chạy server dev"
run = "npm run dev"

[tasks.test]
run = ["npm test", "pytest"]

[tasks.ci]
depends = ["test"]
run = "npm run build"
mise run dev         # chạy task
mise run ci          # chạy test trước rồi build
mise tasks           # liệt kê task

mise thay thế gì?

Nhu cầuCông cụ cũVới mise
Phiên bản runtimenvm, pyenv, asdf, rbenv…[tools]
Biến môi trường theo thư mụcdirenv[env]
Chạy lệnh của projectMakefile, npm scripts[tasks]

Lưu ý

  • Commit mise.toml để team và CI dùng cùng phiên bản; không ghi secret vào đó, dùng file .env bị ignore hoặc trình quản lý secret.
  • mise hỏi bạn "trust" file cấu hình lạ trước khi áp dụng, vì cấu hình có thể chạy lệnh; chỉ trust repo bạn tin.
  • Không bắt buộc dùng cả ba phần: có thể chỉ dùng [tools] và giữ Makefile hay just cho task.
  • Trong CI, dùng action hoặc lệnh mise install để cài đúng phiên bản trước khi build.

Áp dụng thế nào?

  • Dev: Gỡ dần nvm/pyenv, dùng mise use trong từng project; không còn quên chuyển phiên bản khi đổi project.
  • Tech Lead: Thêm mise.toml vào mọi repo; hướng dẫn onboarding rút gọn còn "cài mise, chạy mise install, chạy mise run dev".
  • PM: Lỗi "máy tôi chạy được" do lệch phiên bản giảm hẳn, dev mới bắt tay vào việc nhanh hơn.

Nguồn & tham khảo

  1. jdx/mise — jdx (GitHub)
  2. mise documentation — jdx