你是否有过这样的经历?
🤯 项目 A 需要 Node 18,项目 B 需要 Node 20,每次切换项目都要重新配置环境
🤯 Python 2 和 Python 3 傻傻分不清,pip 安装的包不知道跑哪儿去了
🤯 Docker、Terraform、Kubectl... 几十个工具版本完全记不住
今天推荐的这款工具,让我彻底告别了「版本地狱」👇
📦 今日推荐:mise
GitHub ⭐ 27k | Rust 编写 | 一句话评价:程序员的「开发环境全能管家」
🔗 https://github.com/jdx/mise
🎯 它能解决什么问题?
简单说:一个工具管理你所有的开发工具、环境变量、自动化任务。
想象一下,有了 mise 之后:
bash
复制
# 进入项目目录,自动切换到正确的 Node 版本
cd my-node-project
node -v # 输出:v20.11.0 ✓
# 进入另一个项目,自动切换到不同版本
cd ../my-python-project
python --version # 输出:Python 3.11.0 ✓
# 完全不用手动 nvm/pyenv切换!
不再需要:
一个 mise,全部搞定!
⚡ 安装(30秒搞定)
macOS / Linux
bash
复制
# 推荐方式
curl https://mise.run | sh
# 或者 Homebrew
brew install mise
Windows
powershell
复制
# Winget
winget install mise
# 或者 Scoop
scoop install mise
验证安装
bash
复制
mise --version
# 输出:mise v2024.x.x
🔥 核心功能详解
1️⃣ 工具版本管理(最实用!)
安装指定版本:
bash
复制
# 全局安装 Node.js 20
mise use --global node@20
# 当前项目安装 Python 3.12
mise use --global python@3.12
# 同时安装多个工具
mise use --global node@20 python@3.12 go@1.22
自动激活:
bash
复制
# 进入项目后自动切换版本
cd my-project
# 查看当前工具版本
mise current
# 输出:
# node 20.11.0
# python 3.12.0
# terraform 1.8.0
支持的工具(6000+):
- 🟢 Node.js / Python / Go / Rust / Java
- 🔵 Docker / Kubernetes / Terraform
- 🟡 Ruby / PHP / Elixir / Lua
- ⚫ Git / CMake / Nix / Pulumi
2️⃣ 环境变量管理(超方便!)
在项目目录创建 .mise.toml:
toml
复制
[env]
NODE_ENV = "development"
AWS_REGION = "us-west-2"
DATABASE_URL = "postgres://localhost:5432/myapp"
效果:
3️⃣ 任务运行器(替代 Make)
在 .mise.toml 中定义任务:
toml
复制
[tasks.build]
description = "Build the project"
run = "npm run build"
[tasks.test]
description = "Run tests"
run = "npm test"
[tasks.deploy]
description = "Deploy to production"
depends = ["build", "test"]
run = "npm run deploy"
执行任务:
bash
复制
mise run build
mise run deploy # 自动先运行依赖的 build 和 test
💼 真实使用场景
场景一:同时维护多个 Node 项目
bash
复制
# 项目 A - 旧项目,需要 Node 16
cd ~/projects/legacy-app
node -v # 自动显示 v16.20.0
# 项目 B - 新项目,需要 Node 20
cd ~/projects/modern-app
node -v # 自动切换为 v20.11.0
# 再也不用手动 nvm use 了!
场景二:快速切换开发环境
bash
复制
# 加载开发环境
mise run dev
# 加载测试环境
mise run test
# 加载生产环境
mise run prod
场景三:一键安装所有开发工具
新电脑到手,一行命令搞定:
bash
复制
mise use --global \
node@20 \
python@3.12 \
go@1.22 \
docker@latest \
kubectl@latest \
terraform@latest
📊 对比传统方案
结论:mise = nvm + pyenv + goenv + direnv + make,一工具替代五个!
🎁 高级技巧
技巧一:与现有工具链共存
bash
复制
# 不影响现有的 nvm/pyenv
# mise 会优先使用自己的路径
which node # 显示 mise 管理的路径
技巧二:自动安装缺失工具
bash
复制
# .mise.toml 中定义的工具,执行时自动安装
[tools]
node = "20"
python = "3.12"
# 运行项目时自动安装
mise run dev # 自动安装 node@20 和 python@3.12
技巧三:CI/CD 集成
yaml
复制
# .github/workflows/ci.yml
-name:Setupmise
uses:jdx/mise-action@v2
with:
enable_tools:node@20,python@3.12
-name:Runtests
run:miseruntest
⚠️ 注意事项
首次安装需要激活 Shell
bash
复制
# Zsh 用户
echo'eval "$(mise activate zsh)"' >> ~/.zshrc
# Bash 用户
echo'eval "$(mise activate bash)"' >> ~/.bashrc
配置存储位置
- 全局配置:
~/.config/mise/config.toml - 项目配置:
.mise.toml 或 mise.toml
📝 总结
一句话推荐:如果你同时维护多个项目,或者经常需要切换开发环境,mise 绝对值得一试!
bash
复制
# 立即体验
curl https://mise.run | sh
🔗 GitHub:https://github.com/jdx/mise
📖 文档:https://mise.jdx.dev
🔔 关注不迷路,每天一个 GitHub 神器,让你的开发效率翻倍!