mise

🔤 Rust ★ 32068 ⑂ 0 daily #10 (+135) 抓取 2026-08-08

一句话简介

mise 是一款基于 Rust 的开发环境管理工具,可统一管理运行时版本、环境变量与任务,替代 asdf、direnv、make 等多工具组合。

标签

  • 开发工具
  • 环境管理
  • Rust
  • 运行时版本控制
  • 命令行工具

适用应用场景

  • 为不同项目按目录自动切换 Node.js、Python、Rust 等运行时版本
  • 通过配置文件统一管理多项目的环境变量与密钥
  • 在仓库根目录运行 `mise run` 执行构建、测试、部署等任务
  • 替代 asdf、nvm、pyenv 等分散工具,简化团队环境配置

README 中文摘要

简介

mise(全称 mise-en-place)是一个一体化命令行工具,用于在每次命令执行前自动准备开发环境。它将项目所需的开发工具、环境变量和任务统一管理在 mise.toml 配置文件中,使新的 shell 终端、代码仓库克隆以及 CI 作业都能从同一套配置启动,避免在不同环境下出现的工具版本不一致问题。

核心功能

  • 管理开发工具版本:支持安装和切换 node、python、cmake、terraform 等数百种工具。
  • 加载环境变量:按项目目录加载环境变量,支持从 .env 文件及其他数据源读取配置。
  • 运行项目任务:定义构建、测试、代码检查和部署等任务,并支持任务依赖。

安装方式

通过官方安装脚本一键安装:

$ curl https://mise.run | sh
$ ~/.local/bin/mise --version
2026.8.3 macos-arm64 (2026-08-07)

安装完成后需要将 mise 集成到 shell 中,按使用的 shell 类型追加相应配置:

# bash 用户
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc
# zsh 用户
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc
# fish 用户
echo '~/.local/bin/mise activate fish | source' >> ~/.config/fish/config.fish
# PowerShell 用户
echo '~/.local/bin/mise activate pwsh | Out-String | Invoke-Expression' >> ~/.config/powershell/Microsoft.PowerShell_profile.ps1

使用示例

执行特定工具版本的命令

$ mise exec node@26 -- node -v
v26.x.x

全局安装多个工具

$ mise use --global node@26 go@1
$ node -v
v26.x.x
$ go version
go version go1.x.x macos/arm64

管理环境变量

mise.toml 中定义:

[env]
SOME_VAR = "foo"

运行时通过 mise set 动态修改:

$ mise set SOME_VAR=bar
$ echo $SOME_VAR
bar

定义并运行任务

mise.toml 中声明任务:

[tasks.build]
description = "build the project"
run = "echo building..."

执行任务:

$ mise run build
building...

综合项目示例

下面示例展示如何同时管理工具版本、环境变量和任务:

# mise.toml
[tools]
terraform = "1"
aws-cli = "2"

[env]
TF_WORKSPACE = "development"
AWS_REGION = "us-west-2"
AWS_PROFILE = "dev"

[tasks.plan]
description = "Run terraform plan with configured workspace"
run = """
terraform init
terraform workspace select $TF_WORKSPACE
terraform plan
"""

[tasks.validate]
description = "Validate AWS credentials and terraform config"
run = """
aws sts get-caller-identity
terraform validate
"""

[tasks.deploy]
description = "Deploy infrastructure after validation"
depends = ["validate", "plan"]
run = "terraform apply -auto-approve"

执行流程:

mise install   # 安装 mise.toml 中指定的工具
mise run deploy

deploy 任务会自动等待 validateplan 完成后才会执行。

技术特点

  • 真实路径解析:调用 which node 返回的是工具的实际安装路径,而非垫片(shim)路径,方便调试。
  • 多 shell 支持:兼容 bash、zsh、fish 和 PowerShell。
  • 任务依赖系统:任务之间可通过 depends 字段声明依赖关系,自动按顺序执行。

社区与支持

项目使用 GitHub Discussions 进行交流和维护,分设公告、想法征集、故障排查与 Bug 报告等分类。完整文档、工具注册表和高级用法示例可在官方站点获取。

摘要更新于 2026-08-08 00:31:29 · 原文 6931 字符 · md5 9ee632ab9421…