🐟

niのfish版プラグインを作った

2023/03/28に公開

niって何?

niとはnpmやyarn等のパッケージマネージャをプロジェクト毎に適切な物を選択して実行してくれるツールです。ni以外にもnun(npm uninstall)やnr(npm run)等のコマンドも提供されており、install以外のコマンドも共通化されるようになっています。

内部的にはlockファイルやpackage.jsonpackageManagerフィールドから適切なパッケージマネージャを選択するようなロジックになっています。
https://github.com/antfu/ni/blob/main/src/detect.ts

また、オプションも各パッケージマネージャに応じて適切に変換するようになっており、パッケージマネージャ間の違いを吸収してくれるようになっています。
https://github.com/antfu/ni/blob/main/src/agents.ts

zsh版

niのzsh版の実装を作っている方が居ます。
こちらのzsh版は本家とは違い、niコマンドに全て集約する形になっており、runやuninstall等のコマンドもniを経由して実行するようになっています。

fish版

https://github.com/Karibash/ni.fish

本家niはコマンドがやたらと増えるという仕様に対する心理的ハードルがあったので、zsh版のアプローチはとても良いなと思い、fishでも同じようなプラグインを作りました。

fishプラグインなのでインストール方法は簡単です。

fisher install Karibash/ni.fish

zsh版のパッケージマネージャ判定ロジックは微妙に本家niとは異なっているのですが、fish版ではなるべく本家と同じようなロジックになるようにしています。
lockファイルを上位ディレクトリへ再帰的に探索するようにしているので、npm workspaceのようなモノレポで下位ディレクトリに居る場合でも正常にパッケージマネージャを判定出来るようになっています。

簡単な利用方法はREADME.mdへ纏めているので詳細が気になる方は確認いただければと思います。
また、issueやPR等も大歓迎です!良いなと思ったらレポジトリへスターもお願いします!

Discussion