用途
mise 是一个多语言工具版本管理器与任务运行器,用于管理项目中的开发工具、环境变量和任务。它适合需要在同一项目或不同项目间切换多种语言与工具版本的开发场景。
主要能力
配置
mise 使用项目根目录下的 mise.toml(也支持 .mise.toml、.config/mise/config.toml)作为配置文件。配置具有层级结构,子目录中的设置会覆盖父目录的设置。
工具管理
工具在 [tools] 段中定义。mise 会按目录安装并激活正确的版本。工具可从多种后端安装:
- Core:node、python、go、ruby(内置)
- npm:npm:prettier、npm:eslint
- pipx:pipx:black、pipx:ruff
- cargo:cargo:ripgrep
- github:github:BurntSushi/ripgrep
- aqua:aqua:hashicorp/terraform
环境变量
环境变量在 [env] 段中定义,进入对应目录时自动激活项目专属的环境变量。也支持从 .env 文件加载环境变量,以及通过 _.path 添加路径。
任务运行
任务在 [tasks] 段中定义,或作为 mise-tasks/ 目录下的独立脚本存在。任务支持依赖关系、源文件与输出文件声明等特性。
使用方式
基本 mise.toml 结构
[tools]
node = "22"
python = "3.12"
[env]
NODE_ENV = "development"
[tasks.build]
run = "npm run build"
常用命令
| 命令 | 说明 |
|---|---|
| mise use node@22 | 安装工具版本并写入 mise.toml |
| mise use -g node@22 | 设置全局工具版本 |
| mise install | 安装配置中的所有工具 |
| mise run <task> | 运行任务 |
| mise x -- <cmd> | 在 mise 环境中执行命令 |
| mise ls | 列出已安装的工具 |
| mise doctor | 诊断 mise 设置 |
Shell 激活
将以下内容加入 shell 的 rc 文件以自动激活 mise:
# bash: ~/.bashrc
eval "$(mise activate bash)"
# zsh: ~/.zshrc
eval "$(mise activate zsh)"
# fish: ~/.config/fish/config.fish
mise activate fish | source
若不使用激活,可通过 mise x -- <command> 或 mise run <task> 执行。
常见模式
包含 Node.js 与 Python 的项目:
[tools]
node = "lts"
python = "3.12"
[env]
NODE_ENV = "development"
PYTHONDONTWRITEBYTECODE = "1"
[tasks.dev]
run = "npm run dev"
[tasks.test]
run = ["npm test", "pytest"]
带依赖的任务:
[tasks.build]
run = "npm run build"
sources = ["src/**/*.ts"]
outputs = ["dist/**/*.js"]
[tasks.deploy]
depends = ["build", "test"]
run = "./scripts/deploy.sh"
文件任务(mise-tasks/build):
#!/usr/bin/env bash
#MISE description="Build the project"
#MISE depends=["lint"]
npm run build
从 .env 文件加载环境变量:
[env]
_.file = ".env"
_.path = "./bin"
参考文件
需要详细信息时,可查阅相应参考文件:
- 配置选项(工具选项、env 指令、设置):references/configuration.md
- 任务定义(toml 任务、文件任务、参数、依赖):references/tasks.md
- CLI 命令(所有命令标志与示例):references/cli.md
- 可安装项概览(所有可安装选项的查找起点):references/installable-overview.md
- 核心工具(内置第一方语言):references/core-tools.md
- 后端(支持的包生态系统与后端家族):references/backends.md
- 注册表别名(mise use 接受的工具简写):references/registry-tools.md
- 钩子与高级功能:references/advanced.md
适用场景
- 需要在项目中固定多种开发工具版本(如 Node.js、Python、Go、Ruby 等)。
- 需要按目录自动切换工具版本与环境变量。
- 需要定义并运行项目任务,包括带依赖关系的任务。
- 需要从多种包生态(npm、pipx、cargo、github、aqua 等)安装工具。
限制
资料中未提供关于收费、价格、平台支持范围、性能效果等方面的信息,暂未提供。