開発ツール
mise(バージョン管理とタスク実行)
Node.js・Python・Go などのバージョンをプロジェクトごとに切り替え、環境変数やよく使うコマンド(タスク)もまとめて管理できる mise の使い方。
mise(ミーズ)は、プログラミング言語や開発ツールのバージョンを管理するツールです。nvm・pyenv・asdf などの代わりに1つで済み、プロジェクトのフォルダに入るだけで、そのプロジェクト用のバージョンに自動で切り替わります。環境変数の設定や、よく使うコマンドを「タスク」として登録する機能もあります。
miseインストールと初期設定
Ubuntu には最初から入っていません。 で入れられます。
mise 本体を入れて、シェルで使えるようにします。
$ curl https://mise.run | sh # ~/.local/bin/mise に入る
$ ~/.local/bin/mise --version使っているシェルの設定ファイルに次の1行を足し、端末を開き直します。
echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc # bash
echo 'eval "$(~/.local/bin/mise activate zsh)"' >> ~/.zshrc # zshこれで、フォルダを移動するたびに、そのフォルダの設定に合わせてツールのバージョンが自動で切り替わります。
mise useツールを入れて使うバージョンを決める
ツールをインストールし、そのフォルダ(または全体)で使うバージョンとして設定ファイルに書き込みます。いちばんよく使うコマンドです。
$ 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@22 | 22 系の最新 |
[email protected] | バージョンを固定 |
node@lts / node@latest | LTS / 最新 |
-g | プロジェクトではなく全体の既定にする |
--pin | 22 ではなく 22.11.0 のように正確なバージョンで書き込む |
書き込まれる設定ファイルはこのような形です。
[tools]
node = "22"
python = "3.12"mise install設定ファイルのツールをまとめて入れる
mise.toml などに書かれているツールを、まだ入っていなければすべて入れます。プロジェクトを clone したあとに最初に実行します。
$ mise install # 設定ファイルに書かれたものをすべて
$ mise install node@20 # 使うバージョンを変えずに入れるだけmise ls / ls-remote入っているもの・入れられるものの一覧
入っているツールとバージョンや、入れられるバージョンの一覧を表示します。
$ 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今どれが使われているか
今のフォルダで使われるバージョンや、実行ファイルの場所を調べます。
$ mise current # このフォルダで使われるバージョンの一覧
$ mise current node
$ mise which node # 実行される node の場所
$ mise where python # python が入っているフォルダmise execバージョンを指定して1回だけ実行する
設定を変えずに、指定したバージョンでコマンドを1回だけ実行します。
$ 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 のように使えます。
[tasks.dev]
description = "開発サーバーを起動"
run = "npm run dev"
[tasks.build]
run = ["npm ci", "npm run build"]
[tasks.test]
depends = ["build"] # 先に build を実行する
run = "npm test"$ mise run build # 省略して mise r build
$ mise tasks # タスクの一覧
$ mise run test # depends に書いたタスクから順に実行
$ mise watch build # ファイルが変わるたびに実行(watchexec が必要)mise env / set環境変数を管理する
フォルダに入ったときに自動で設定される環境変数を、mise.toml の [env] に書いておけます。
[env]
NODE_ENV = "development"
DATABASE_URL = "postgres://localhost/mydb"
_.file = ".env" # .env ファイルも読み込む
_.path = ["./bin"] # PATH に足す$ mise set API_URL=http://localhost:3000 # [env] に書き込む
$ mise env # 設定される環境変数を表示
$ mise env -s bash # シェルに読み込める形で出すmise trust設定ファイルを信頼する
ほかの人が作ったリポジトリの mise.toml は、環境変数やタスクを勝手に実行しないよう、最初は「信頼されていない」扱いになります。中身を確かめてから信頼します。
$ mise trust # このフォルダの設定ファイルを信頼する
$ mise trust --untrustmise outdated / upgrade新しいバージョンに更新する
入っているツールに新しいバージョンがあるか調べ、設定の範囲内で更新します。
$ mise outdated # 更新できるもの
$ mise upgrade # 設定の範囲内で最新に(node = "22" なら 22 系の最新)
$ mise upgrade --bump # 設定ファイルのバージョンも書き換えて上げるmise uninstall / prune使わないバージョンを消す
入れたバージョンを消したり、どの設定からも使われていないものをまとめて片付けたりします。
$ mise uninstall node@18
$ mise prune # どの設定ファイルからも使われていないバージョンを消す
$ mise cache clearmise doctor設定がおかしくないか調べる
mise がうまく動かないときに、設定やシェルへの組み込みに問題がないかを診断します。
$ mise doctor
$ mise config # 読み込まれている設定ファイルの一覧(優先順)mise self-update / implodemise 自体の更新と削除
mise 本体を新しくしたり、mise と入れたツールをまるごと消したりします。
$ mise self-update # mise 本体を更新
$ mise implode # mise と、mise で入れたものをすべて削除いろいろなツールを入れる(バックエンド)
言語だけでなく、npm・cargo・pipx・GitHub のリリースなどで配られているコマンドも、mise でまとめて管理できます。
$ 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 # 登録済みのツールは名前だけで入るよく使う流れ
# 新しいプロジェクトで 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 系になっている