5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JavaScriptAdvent Calendar 2024

Day 1

ni (@antfu/ni) のシェル補完を実現! ni-completion で開発効率を劇的に向上!

Last updated at Posted at 2024-11-30

はじめに

フロントエンドエンジニアのみなさん、こんにちは!
突然ですがパッケージマネージャーの使い分け、大変ですよね。npm を使うプロジェクト、yarn を使うプロジェクト、pnpm や bun なんて新顔も登場して...。コマンドを間違える、構文を調べる手間が増えるなど、頭がこんがらがっちゃいますよね。

そんなみなさんに朗報です! @antfu/ni という便利ツールがあるのをご存知ですか?

@antfu/ni って何?

@antfu/ni は、Anthony Fu 氏が開発したツールで、プロジェクトに合わせて自動でパッケージマネージャーを切り替えてくれます。

使い方はとってもシンプル。例えば...

ni vue  # パッケージマネージャーを自動で判別してインストール
nr dev  # npm run dev / yarn dev / pnpm dev を自動選択

便利ですよね!

基本的な使い方はこんな感じです。

コマンド npm yarn pnpm bun
ni npm install yarn install pnpm install bun install
nr npm run yarn run pnpm run bun run
nlx npx yarn dlx pnpm dlx bunx
nu npm upgrade yarn upgrade (yarn up) pnpm update bun update
nun npm uninstall yarn remove pnpm remove bun remove
nci npm ci yarn install --frozen-lockfile pnpm install --frozen-lockfile bun install --frozen-lockfile

今回、こちらをもっと便利にしました。

ni-completion の開発

@antfu/ni は素晴らしいツールですが、シェルの自動補完に対応していません。私自身、日々 @antfu/ni を使う中で、補完機能があればもっと便利になると強く感じていました。例えば...

  • パッケージ名を手動で入力しなきゃいけない
  • スクリプト名も自分で全部タイプしなきゃいけない
  • オプションを調べながら入力しなきゃいけない

そこで私が開発したのが「ni-completion」です。

ni-completion のインストール方法

ni-completion のインストールはとても簡単です。お使いのシェルに合わせて、以下のコマンドを実行するだけ!

Bash

curl -o ~/.ni.bash https://raw.githubusercontent.com/snowsman/ni-completion/main/.ni.bash
echo 'source ~/.ni.bash' >> ~/.bashrc
source ~/.bashrc

Zsh

mkdir -p ~/.zsh/completion
curl -o ~/.zsh/completion/_ni https://raw.githubusercontent.com/snowsman/ni-completion/main/.ni.zsh
echo 'fpath=(~/.zsh/completion $fpath)' >> ~/.zshrc
echo 'autoload -Uz compinit && compinit' >> ~/.zshrc
source ~/.zshrc

これで準備完了です!

ni-completion で何ができるの?

ni-completion ではこんな補完が使えるようになります。

  1. パッケージ名の自動補完!しかもスコープ付きパッケージにも対応!
  2. package.json に書かれたスクリプトやインストール済みパッケージの自動補完!
  3. オプションの自動補完!
ni react[TAB]  # react で始まるパッケージを補完
nr [TAB]       # dev, build, test などのスクリプトを補完
nun [TAB]      # アンインストール時にインストール済みパッケージを補完
ni -[TAB]      # -v, --version などのオプションを補完

ni-completion の裏側

インストールする npm パッケージ名の補完は、 からパッケージ情報を取得し、補完候補を生成します。npm search の結果や Public Registry API(registry.npmjs.org)npms-api(api.npms.io) も検討しましたが、精度が低かったため、https://www.npmjs.com/search/suggestions を採用しました。

スクリプト名やアンインストール時のパッケージ名の補完は、package.json から取得し、補完候補を生成します。package.json の読み込みや解析には、皆さんインストールしているであろう Node.js を使用しています。

ni-completion の将来

ni-completion は、今後もさらに進化していく予定です! PR や Issue も大歓迎です!

  • 新しいパッケージマネージャーや他のシェル環境への対応
  • もっとスマートな補完候補の提案
  • さらなる高速化

さいごに

ni-completion をぜひ一度試してみてください!開発効率が劇的に向上すること間違いなしです!

詳しくは GitHub リポジトリ をチェックしてみてください。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?