Use when managing development tool versions with Mise. Covers installing tools, version pinning, and replacing language-specific version managers.
Limited to specific tools
Additional assets for this skill
This skill is limited to using the following tools:
name: mise-tool-management description: Use when managing development tool versions with Mise. Covers installing tools, version pinning, and replacing language-specific version managers. allowed-tools:
Managing development tool versions across projects with Mise as a unified version manager.
# Install specific version
mise install node@20.10.0
mise install python@3.12.0
mise install rust@1.75.0
# Install latest version
mise install node@latest
mise install python@latest
# Install from .tool-versions or mise.toml
mise install
# Set global version
mise use --global node@20
# Set project version
mise use node@20.10.0
mise use python@3.12 rust@1.75
# Use latest
mise use node@latest
# mise.toml
[tools]
node = "20.10.0"
python = "3.12.0"
rust = "1.75.0"
terraform = "1.6.0"
[tools]
# Latest patch version
node = "20.10"
# Latest minor version
node = "20"
# Latest version
node = "latest"
# Prefix notation
terraform = "1.6" # Latest 1.6.x
[tools]
# Use multiple versions
node = ["20.10.0", "18.19.0"]
python = ["3.12", "3.11", "3.10"]
# Switch between versions
mise shell node@18.19.0
[tools]
node = { version = "20.10.0", postinstall = "corepack enable" }
[tools]
python = "3.12"
[env]
_.python.venv = { path = ".venv", create = true }
[tools]
# From specific registry
"cargo:eza" = "latest"
"npm:typescript" = "5.3"
# From git repository
my-tool = "git:https://github.com/org/tool.git"
[tools]
# Languages
bun = "1.0"
deno = "1.38"
elixir = "1.15"
erlang = "26.1"
go = "1.21"
java = "21"
node = "20.10"
python = "3.12"
ruby = "3.3"
rust = "1.75"
zig = "0.11"
# Infrastructure
terraform = "1.6"
kubectl = "1.28"
awscli = "2.13"
[tools]
"npm:pnpm" = "8.10"
"npm:yarn" = "4.0"
"cargo:cargo-binstall" = "latest"
"go:github.com/golangci/golangci-lint/cmd/golangci-lint" = "latest"
# Production: Pin exact versions
[tools]
node = "20.10.0"
terraform = "1.6.4"
# Development: Use minor version ranges
[tools]
node = "20" # Any 20.x
python = "3.12" # Any 3.12.x
# Experimental projects
[tools]
rust = "latest"
bun = "latest"
# Set alias for current directory
mise alias set node lts 20.10.0
# Set global alias
mise alias set --global python3 python@3.12
[tools]
node = "lts"
python = "3.12"
# List installed tools
mise list
# Check current versions
mise current
# Verify tool installation
mise doctor
# Show tool details
mise ls-remote node
# List available versions
mise ls-remote python
# Check latest version
mise latest node
# Mise reads .tool-versions files
cat .tool-versions
# nodejs 20.10.0
# python 3.12.0
# Migrate to mise.toml
mise use node@20.10.0 python@3.12.0
# Read from .nvmrc
cat .nvmrc
# 20.10.0
mise use node@$(cat .nvmrc)
# Read from .python-version
mise use python@$(cat .python-version)
# Good: Explicit production versions
[tools]
node = "20.10.0"
terraform = "1.6.4"
postgres = "16.1"
# mise.toml - All project dependencies in one place
[tools]
node = "20.10.0"
python = "3.12.0"
terraform = "1.6.4"
kubectl = "1.28.0"
[env]
PROJECT_NAME = "my-app"
[tools]
# Enable corepack for package managers
node = { version = "20.10.0", postinstall = "corepack enable" }
# Create Python virtual environment
python = { version = "3.12", venv = ".venv" }
# In CI/CD pipelines
mise install --check
mise doctor
# Verify specific tools
mise current node
mise current python
# Root mise.toml - shared tools
[tools]
node = "20.10.0"
terraform = "1.6.4"
# packages/api/mise.toml - additional tools
[tools]
"npm:typescript" = "5.3"
"npm:prisma" = "5.7"
# packages/web/mise.toml
[tools]
"npm:next" = "14.0"
# mise.toml - production tools
[tools]
node = "20.10.0"
postgres = "16.1"
# mise.local.toml - development tools (gitignored)
[tools]
"npm:nodemon" = "latest"
"cargo:cargo-watch" = "latest"
# Check for updates
mise outdated
# Update to latest patch version
mise upgrade node
# Update all tools
mise upgrade
# Update with constraints
mise use node@20 # Updates to latest 20.x
# Bad: Using multiple version managers
nvm use 20
mise use node@20 # Conflicts
# Good: Use only Mise
mise use node@20
# Bad: Hardcoded paths
/Users/me/.local/share/mise/installs/node/20.10.0/bin/node
# Good: Use mise shims or mise exec
mise exec -- node
mise x -- node
# Bad: No version specified
[tools]
node = "latest" # Can break on updates
# Good: Specify constraints
[tools]
node = "20.10.0" # Explicit
# OR
node = "20" # Controlled range
# Bad: Missing required tools
[tools]
terraform = "1.6"
# Missing: kubectl, helm for deployment
# Good: Include all dependencies
[tools]
terraform = "1.6.4"
kubectl = "1.28.0"
helm = "3.13.0"
[tools]
# Install based on platform
node = "20.10.0"
python = "3.12"
# Platform-specific tools
[tools."cargo:watchexec-cli"]
platforms = ["linux", "darwin"]
version = "latest"
[tools]
node = {
version = "20.10.0",
postinstall = '''
corepack enable
npm install -g npm@latest
'''
}
# Use specific backend for tools
[tools]
# Use core backend (faster)
node = "core:20.10.0"
# Use asdf plugin
ruby = "asdf:3.3.0"