こんにちは、ナナオです。
今回は巷で話題のmiseを使っていこうと思います。
GitHub - jdx/mise: dev tools, env vars, task runner
miseとは
miseはThe front-end to your dev envという公式の説明がありますが、要は開発環境のための主要ツールになることを目指して作られたツールです。
できることは主に以下の三つです。
- 開発ツールの管理
- 環境変数の管理
- タスクの管理
開発ツールの管理とは、node.js、Python、Terraformなどのバージョン管理を行えるという意味です。
環境変数の管理はそのままの意味で、環境変数の管理を行えます。
タスクの管理とは、例えばビルドやテストといった作業の管理を行えます。
miseのインストール
brewが入っていれば以下のコマンドで入ります。
brew install mise
miseでインストールした開発ツールを使用できるようにアクティベートしておきましょう。
.zshrcに以下のコマンドを追加します。
# miseのアクティベート
eval "$(mise activate zsh)"
これで準備が整いました。
タスクを定義する
普段よく使っているブログの公開コマンドを定義します。
[tasks.blog-deploy]
description = 'ブログのビルドおよび公開'
run = [
'hugo',
'hugo deploy',
]
dir = "/mnt/c/Users/Nanao/Project/tools/hugo-blog"
実行するとブログの公開ができました。楽ちん~
anyenvから移行する
ということで本題です。anyenvは遅いし移行しようと思います。
長い間!!!!!!!クソお世話になりました!!!!!(ドン)
anyenvのアンインストール
まずanyenvでインストールしている~~envを削除します。
anyenv versionsでインストールされている環境を確認します。
❯ anyenv versions
goenv:
* 1.20.6 (set by /home/nanao/.anyenv/envs/goenv/version)
1.22.9
1.23.3
nodenv:
system
* 22.7.0 (set by /home/nanao/.anyenv/envs/nodenv/version)
pyenv:
system
3.12.0
* 3.12.1 (set by /home/nanao/.anyenv/envs/pyenv/version)
3.12.2
3.12.3
3.12.4
3.12.5
3.13.2
rbenv:
* 3.2.2 (set by /home/nanao/.anyenv/envs/rbenv/version)
結構いろいろインストールしていました。
これらを削除します。
❯ anyenv uninstall goenv
anyenv: remove /home/nanao/.anyenv/envs/goenv? yes
~ 7s
❯ anyenv uninstall pyenv
anyenv: remove /home/nanao/.anyenv/envs/pyenv? yes
~
❯ anyenv uninstall nodenv
anyenv: remove /home/nanao/.anyenv/envs/nodenv? yes
~
❯ anyenv uninstall rbenv
anyenv: remove /home/nanao/.anyenv/envs/rbenv? yes
再度anyenv versionsを確認してみます。
❯ anyenv versions
何も出力されなくなりました。
次に自動で作成されていたanyenv関連のファイルを削除します。
rm -rf ~/.anyenv
rm -rf .config/anyenv
次にanyenv自体を削除しましょう。
私の環境ではbrewでインストールしていたので、以下のコマンドでアンインストールします。
brew uninstall anyenv
anyenvコマンドが使えなくなっているか確認します。
❯ anyenv
zsh: command not found: anyenv
無事アンインストールできたようです。
.zshrcに定義したanyenvのアクティベートに使用していたコマンドも削除します。
# 以下の行を削除
export PATH=${PATH}:${HOME}/.anyenv/bin
eval "$(anyenv init -)"
shellを再起動して問題なければアンインストール作業は完了です!
exec $SHELL -l
miseによるバージョン管理
miseによるバージョン管理に置き換えます。
まずはGo、お前だ
ということで、以下のようなディレクトリ構成のGoプロジェクトで実験します。
❯ ls -al
total 36
drwxr-xr-x 2 nanao nanao 4096 Jan 15 00:07 .
drwxr-xr-x 16 nanao nanao 4096 Dec 23 23:35 ..
-rw-r--r-- 1 nanao nanao 5 Jan 15 00:07 .go-version
-rw-r--r-- 1 nanao nanao 878 Nov 20 2024 free_1.go
-rw-r--r-- 1 nanao nanao 1373 Nov 17 2024 go.mod
-rw-r--r-- 1 nanao nanao 7653 Nov 17 2024 go.sum
-rw-r--r-- 1 nanao nanao 651 Nov 17 2024 hello.go
-rw-r--r-- 1 nanao nanao 395 Nov 16 2024 typical90_001.go
.go-versionファイルは以下のように定義されています。
❯ cat .go-version
1.20
このGoプロジェクトではバージョン1.20を使用するようです。
早速ダウンロードしていきたいんですが、せっかくならmiseに自動でバージョンを判別させたいですよね。
以下のコマンドを実行します。
❯ mise install
mise all tools are installed
ただ、このコマンドでは何も実行されません。
実行速度の観点から、通常は.~-verisonファイルなどが参照できないようになっているためです。
idiomatic versions default disabled · jdx/mise · Discussion #4345 · GitHub
以下のコマンドを実行して.go-versionファイルを認識できるようにしてあげましょう。
mise settings add idiomatic_version_file_enable_tools go
インストールします。
❯ mise install
❯ which go
/home/nanao/.local/share/mise/installs/go/1.20/bin/go
ということで、.go-versionから指定したバージョンのgoをインストールすることができました!
感想
mise、とにかくはやい。
今後miseを活用してどんどん開発していきたいですね。