在 macOS 上做开发,经常会同时用到 Node.js、Python、Go(甚至 Ruby/Java)。如果每种语言各装一套版本管理器,长期会遇到:路径混乱、版本漂移、团队协作难以对齐。mise(原 rtx)把“多语言版本 + 项目级锁定 + 自动切换”合在一起,适合把环境配置做成可复制的流程。
如果你已经在用 Homebrew,可以直接安装:
brew install mise
安装完成后,用下面命令确认版本:
mise --version
参考链接:https://github.com/jdx/mise
mise 需要在 shell 启动时初始化,才能做到进入项目目录自动切换版本。zsh 的常见写法是把初始化加入 ~/.zshrc(按你的环境选择其一):
eval "$(mise activate zsh)"
改完后重开终端,或手动加载一次:
source ~/.zshrc
进入你的项目目录,按需安装并写入版本(示例分别是 Node/Python/Go):
mise use -g node@lts
mise use python@3.12
mise use go@1.22
如果你希望“只对当前项目生效”,可以在项目目录执行不带 -g 的写法(会生成/更新项目内的 .tool-versions):
mise use node@20.11.1
当同事拉下代码后,只要进入目录并执行一次安装同步即可:
mise install
查看当前目录生效的工具版本:
mise current
列出已安装的版本:
mise ls
更新某个工具到新版本(示例 Node):
mise install node@20.12.2
mise use node@20.12.2
1) 终端提示 command not found
通常是 shell 没有加载 activate。先确认你的 shell 类型,再检查是否执行了:
eval "$(mise activate zsh)"
2) 版本切换不生效
优先检查项目目录是否真的有 .tool-versions,以及是否在同一个目录层级;其次用下面命令查看当前生效版本,确认是否被全局版本覆盖:
mise current
3) 安装失败或权限问题
建议先升级/修复 Homebrew,然后重试安装;并尽量避免把开发工具装进需要管理员权限的目录。
如果你是通过 Homebrew 安装的,卸载也可以用 Homebrew:
brew uninstall mise
项目内的 .tool-versions 是纯文本文件,不影响代码本身;你也可以在团队讨论后再决定是否保留。
mise 的价值不在于“又一个版本管理器”,而在于把多语言环境统一到同一套规则里:项目写明版本、进入目录自动切换、同事一条命令同步。对于需要频繁开新项目、或跨语言协作的团队,能明显减少环境相关的时间消耗。