Migrating from asdf to mise without the headaches

Published: (December 22, 2025 at 03:05 AM EST)
2 min read
Source: Dev.to

Source: Dev.to

1. Remove asdf plugins and uninstall asdf

# remove plugins
asdf plugin list | xargs -n 1 asdf plugin remove

# uninstall asdf
brew uninstall asdf --force
brew autoremove

Clean up .zshrc

# ASDF configuration
. "$BREW_PREFIX/opt/asdf/libexec/asdf.sh"

Remove leftover files

rm -rf ~/.asdf
rm -rf ~/.tool-versions

Confirm that asdf has been deleted

brew list asdf
# Expected output:
# Error: No such keg: /opt/homebrew/Cellar/asdf

2. Install mise

  • Project page:
  • Getting started:
brew install mise

Verify the installation

mise --version
              _                                        __              
   ____ ___  (_)_______        ___  ____        ____  / /___ _________
  / __ `__ \/ / ___/ _ \______/ _ \/ __ \______/ __ \/ / __ `/ ___/ _ \
 / / / / / / (__  )  __/_____/  __/ / / /_____/ /_/ / / /_/ / /__/  __/
/_/ /_/ /_/_/____/\___/      \___/_/ /_/     / .___/_/\__,_/\___/\___/
                                            /_/                 by @jdx
2025.12.12 macos-arm64 (2025-12-18)

Add the activation line to your shell configuration

(replace zsh with bash or fish if needed)

eval "$(mise activate zsh)"

3. Install mise plugins

In this example we install nodejs, pnpm, bun, yarn, and python.

List available plugins

mise plugins ls-remote

Core plugins

mise plugins ls --core
# bun, deno, elixir, erlang, go, java, node, python, ruby, rust, swift, zig

Check available versions

mise ls-remote node
mise ls-remote pnpm
mise ls-remote bun
mise ls-remote yarn
mise ls-remote python

Install specific versions

mise install node@22.21.1
mise install yarn@1.22.22
mise install pnpm@10.22.0
mise install bun@1.3.5
mise install python@3.12.12

Or use a mise.toml file

Create mise.toml in your project directory:

[tools]
node   = "22.21.1"
python = "3.12.12"
yarn   = "1.22.22"
pnpm   = "10.22.0"

If you encounter a trust error, run:

mise trust
mise install

Verify installed versions

yarn -v
# 1.22.22

node -v
# v22.21.1

python --version
# Python 3.12.12

If you get zsh: command not found: node, ensure the activation line is present in your .zshrc:

eval "$(mise activate zsh)"

4. asdf → mise command mapping

asdf (modern)mise equivalentNotes
.tool-versionsmise.tomlProject‑local tool definitions
asdf setEdit mise.tomlReplaces asdf local/global
asdf set -u~/.config/mise/config.tomlUser/global config
asdf installmise installInstall all defined tools
asdf execmise exec --Run with pinned tools
asdf currentmise currentShow active versions
asdf plugin add(implicit)mise auto‑manages plugins
asdf plugin listmise lsList installed tools
shimsShell activation (mise activate)PATH‑based
.asdf/installs~/.local/share/mise/installsTool installs
.asdf/shims~/.local/share/mise/shimsExecutable shims
Back to Blog

Related posts

Read more »

My Dev Tool List 2025

TL;DR macOS bash AeroSpace window manager brew install --cask nikitabobko/tap/aerospace Core utilities brew install atuin chezmoi gh fzf eza bat ripgrep st...

OS X Style Dock (Tsunami effect)

markdown !Forem Logohttps://media2.dev.to/dynamic/image/width=65,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2...