/Linuxコマンド

開発ツール

mise(バージョン管理とタスク実行)

Node.js・Python・Go などのバージョンをプロジェクトごとに切り替え、環境変数やよく使うコマンド(タスク)もまとめて管理できる mise の使い方。

mise(ミーズ)は、プログラミング言語や開発ツールのバージョンを管理するツールです。nvm・pyenv・asdf などの代わりに1つで済み、プロジェクトのフォルダに入るだけで、そのプロジェクト用のバージョンに自動で切り替わります。環境変数の設定や、よく使うコマンドを「タスク」として登録する機能もあります。

miseインストールと初期設定

Ubuntu には最初から入っていません。 で入れられます。

mise 本体を入れて、シェルで使えるようにします。

bash
$ curl https://mise.run | sh              # ~/.local/bin/mise に入る
$ ~/.local/bin/mise --version

使っているシェルの設定ファイルに次の1行を足し、端末を開き直します。

bash
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc   # bash
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc     # zsh

これで、フォルダを移動するたびに、そのフォルダの設定に合わせてツールのバージョンが自動で切り替わります。

mise useツールを入れて使うバージョンを決める

ツールをインストールし、そのフォルダ(または全体)で使うバージョンとして設定ファイルに書き込みます。いちばんよく使うコマンドです。

bash
$ mise use node@22             # このフォルダの mise.toml に node 22 を書き込み、入れる
$ mise use [email protected]
$ mise use node@lts            # LTS 版
$ mise use -g node@22          # 全体の既定(~/.config/mise/config.toml)にする
$ mise use -g go@latest
$ mise use node@22 pnpm@9      # まとめて
書き方意味
node@2222 系の最新
[email protected]バージョンを固定
node@lts / node@latestLTS / 最新
-gプロジェクトではなく全体の既定にする
--pin22 ではなく 22.11.0 のように正確なバージョンで書き込む

書き込まれる設定ファイルはこのような形です。

mise.toml
[tools]
node = "22"
python = "3.12"

mise install設定ファイルのツールをまとめて入れる

mise.toml などに書かれているツールを、まだ入っていなければすべて入れます。プロジェクトを clone したあとに最初に実行します。

bash
$ mise install                 # 設定ファイルに書かれたものをすべて
$ mise install node@20         # 使うバージョンを変えずに入れるだけ

mise ls / ls-remote入っているもの・入れられるものの一覧

入っているツールとバージョンや、入れられるバージョンの一覧を表示します。

bash
$ mise ls                      # 入っているもの(今使われているものに印)
$ mise ls --current            # このフォルダで使われるものだけ
$ mise ls-remote node          # 入れられる node のバージョン
$ mise ls-remote node 22       # 22 系だけ
$ mise latest python           # 最新のバージョン番号
$ mise registry | grep -i terraform   # mise で入れられるツールを探す

mise current / which / where今どれが使われているか

今のフォルダで使われるバージョンや、実行ファイルの場所を調べます。

bash
$ mise current                 # このフォルダで使われるバージョンの一覧
$ mise current node
$ mise which node              # 実行される node の場所
$ mise where python            # python が入っているフォルダ

mise execバージョンを指定して1回だけ実行する

設定を変えずに、指定したバージョンでコマンドを1回だけ実行します。

bash
$ mise exec node@20 -- node -v        # 省略して mise x でも同じ
$ mise x [email protected] -- python script.py
$ mise x -- npm test                   # 設定ファイルのツールを有効にして実行

mise runタスク(よく使うコマンド)を実行する

mise.toml に登録したタスクを名前で実行します。Makefile や npm scripts のように使えます。

mise.toml
[tasks.dev]
description = "開発サーバーを起動"
run = "npm run dev"

[tasks.build]
run = ["npm ci", "npm run build"]

[tasks.test]
depends = ["build"]      # 先に build を実行する
run = "npm test"
bash
$ mise run build               # 省略して mise r build
$ mise tasks                   # タスクの一覧
$ mise run test                # depends に書いたタスクから順に実行
$ mise watch build             # ファイルが変わるたびに実行(watchexec が必要)

mise env / set環境変数を管理する

フォルダに入ったときに自動で設定される環境変数を、mise.toml の [env] に書いておけます。

mise.toml
[env]
NODE_ENV = "development"
DATABASE_URL = "postgres://localhost/mydb"
_.file = ".env"          # .env ファイルも読み込む
_.path = ["./bin"]       # PATH に足す
bash
$ mise set API_URL=http://localhost:3000    # [env] に書き込む
$ mise env                                  # 設定される環境変数を表示
$ mise env -s bash                          # シェルに読み込める形で出す

mise trust設定ファイルを信頼する

ほかの人が作ったリポジトリの mise.toml は、環境変数やタスクを勝手に実行しないよう、最初は「信頼されていない」扱いになります。中身を確かめてから信頼します。

bash
$ mise trust                   # このフォルダの設定ファイルを信頼する
$ mise trust --untrust

mise outdated / upgrade新しいバージョンに更新する

入っているツールに新しいバージョンがあるか調べ、設定の範囲内で更新します。

bash
$ mise outdated                # 更新できるもの
$ mise upgrade                 # 設定の範囲内で最新に(node = "22" なら 22 系の最新)
$ mise upgrade --bump          # 設定ファイルのバージョンも書き換えて上げる

mise uninstall / prune使わないバージョンを消す

入れたバージョンを消したり、どの設定からも使われていないものをまとめて片付けたりします。

bash
$ mise uninstall node@18
$ mise prune                   # どの設定ファイルからも使われていないバージョンを消す
$ mise cache clear

mise doctor設定がおかしくないか調べる

mise がうまく動かないときに、設定やシェルへの組み込みに問題がないかを診断します。

bash
$ mise doctor
$ mise config                  # 読み込まれている設定ファイルの一覧(優先順)

mise self-update / implodemise 自体の更新と削除

mise 本体を新しくしたり、mise と入れたツールをまるごと消したりします。

bash
$ mise self-update             # mise 本体を更新
$ mise implode                 # mise と、mise で入れたものをすべて削除

いろいろなツールを入れる(バックエンド)

言語だけでなく、npm・cargo・pipx・GitHub のリリースなどで配られているコマンドも、mise でまとめて管理できます。

bash
$ mise use -g npm:prettier            # npm のパッケージ
$ mise use -g pipx:black              # Python のツール(pipx 経由)
$ mise use -g cargo:ripgrep           # Rust のツール
$ mise use -g ubi:BurntSushi/ripgrep  # GitHub のリリースからビルド済みのものを取得
$ mise use -g terraform kubectl jq    # 登録済みのツールは名前だけで入る

よく使う流れ

bash
# 新しいプロジェクトで node と pnpm のバージョンを決める
$ cd ~/work/my-app
$ mise use node@22 pnpm@9
$ git add mise.toml

# ほかの人がそのリポジトリを使うとき
$ git clone https://github.com/example/my-app && cd my-app
$ mise trust && mise install
$ node -v                      # 自動で 22 系になっている