この記事は以下の記事の続きです。https://zenn.dev/vim_jp/articles/a33de9d64b90d8TL;DRMasonの使用をやめました代わりにlazy.nvimを悪用して半手動でツールを管理することにしましたはじめに皆さんはNeovimでMasonを使っていますか?MasonはNeovimで用いるLSPやformatter、lintなどのツールを管理するためのツールです。Masonは自動でバイナリを落としてきたり管理してくれたりするので、とても便利です。設定ファイルも最小限で済むので、とても楽に環境を構築することができます。Neovimを始めたてであれば、Masonを使うことをおすすめします。Masonをやめた理由Masonはとても便利なのですが、いくつか問題があります。Masonはlockfileを生成してくれないので、現在どのバージョンを使っているのかわからないMasonのupdateは手動で行う必要がある(もちろんlazy.nvimではプラグインのアップデートと同時に:MasonUpdateを実行するように設定することもできますが)Mason経由でバイナリを使うとおかしくなることがある1の理由については、やはり各ツールのバージョンをGit管理できないことが性に合わないためです。3の理由については過去に記事が上がっています。https://zenn.dev/kyoh86/articles/67047e3b18139aというわけで、Masonをやめてどのような管理をするか考えました。Masonから移行していこうバイナリを落とせば動くものまずはバイナリを落とせば動くものから考えていきます。以下のようなツールがあります。lsp等々これらはaquaで管理をします。aquaはaqua.yamlに必要なツールを記述しておくと、必要に応じて自動でバイナリを落としてきてくれます。renovateと連携させることで、定期的にバイナリをアップデートしてくれます。aquaで管理ができないものこれについては、前回の記事で紹介したように、lazy.nvimを悪用することにします。zlszlsはZigのLSPです。こちらはバイナリ配布を利用するのが難しいため、手元でビルドする必要があります。これはlazy.nvimに設定を記述することで、最新版があったら自動でインストールしてくれるようにしました。RuffPyrightやRuffはPythonのツールです。こちらはzlsと違い、Pythonの環境が必要になります。そのため、これらのツールはryeを使ってプロジェクトを作成し、ツールの管理自体はryeで、アップデート時の更新はlazy.nvimで行うようにしました。https://github.com/ryoppippi/dotfiles/blob/becc8bb7a5da5a6b731b432070d8d86d06b2aa15/nvim/lua/cli/python_tools/init.luahttps://github.com/ryoppippi/dotfiles/blob/22598e3f61bf90d81ae169173dfd5a1db14edc3f/nvim/lua/cli/python_tools/pyproject.toml#L2-L14Nodeツール自分はNPMにあるツールを使うことが多いのですが、これらはaquaで管理することができません。こちらは自分でBunでプロジェクトを作成し、ツールの管理自体はBunで、インストールの操作はlazy.nvimで行うようにしました。https://github.com/ryoppippi/dotfiles/blob/b3af0f006f20c60f12b99196baef7216884755ea/nvim/lua/cli/node_servers/init.luahttps://github.com/ryoppippi/dotfiles/blob/b3af0f006f20c60f12b99196baef7216884755ea/nvim/lua/cli/node_servers/package.jsonNodeのツールもPythonのツールもそれぞれlockfileに記述がされているので、どのバージョンを使っているのか一目でわかります。pullするだけで最新版を使うことができます。Deno使わないの?Bun版のnpxであるbunx、もしくはDenoを使えば、nvim-lspconfigのcommandに直接bunxやdenoを指定することでツールをインストールすることなく使うことができます。node_modulesを管理する必要がなくなります!自分としても将来的にはこれらを使えたらいいなと思っています。今回はこれらの使用を見送りました。理由としては:Denoのnpm互換はまだ発展途上なため、動かないツールがあるBunはDeno以上に互換性はあるしかしbunxは一時的なツールを/tmpに落としてくるため、万が一オフライン環境でマシンを再起動した場合にツールが使えなくなる危険性がある常時インターネットに確実に接続されることが保証されている環境であれば、現時点ではbunxを使うのが一番良いと思います。管理の手間から解放されつつも、ある程度はオフラインにキャッシュしてくれるDenoも魅力的ですね。これらのツールが今後発展していくにつれて、Nodeツールの管理の方法は変わっていくと思います。まとめMasonは便利だけど、lockfileがないので管理が難しい代わりにlazy.nvimを悪用して半手動で管理することにしたこれでlockfileがあるので、どのバージョンを使っているのかわかるRenovateと組み合わせると定期的にアップデートしてくれる余談ところで、lazy.nvimのlockfileはRenovateでアップデートされませんね。Contributionが必要かな?ryoppippivim-jpPublicationバッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。