はじめに
皆さんはnpm
, yarn
, pnpm
どのPackage Managerを使っていますか?
yarn
しか使わない!という方もいるかもしれませんが、pnpm
評判いいみたいだし使ってみようかなとか、チーム開発では安定のnpm
なんだよなとか、複数のPackage Managerを使用するケースって少なくないかと思います。
そういった場合、それぞれのコマンドを覚えるのも面倒ですし、プロジェクトに応じて頭の切り替えをしないといけないのは大変です。
本記事は、そういった悩みを解決する方法を紹介します。
ni
ni
はnpm
,yarn
,pnpm
,bun
に対応していて、それぞれのlockfileを読み取って、適切なコマンドを実行してくれるPackage Managerです。
ni
のコマンドは短く、わかりやすいのですぐ覚えられると思います。
ちなみに、作者はVueやNuxt、ViteなどのコアチームメンバーのAnthony Fu氏です。
インストール
npm i -g @antfu/ni
Windows PowerShellで発生するコマンド競合の対策
Windows PowerShellでは既定でni
がNew-Item
の省略形として登録されており、そのまま使うと競合します。
一時的にni
をパッケージマネージャーのコマンドとして使いたい場合は
Remove-Item Alias:ni -Force -ErrorAction Ignore
を実行します。
この方法はシェル再起動で変更が失われるので、以降もni
を使い続ける場合はシェルのプロファイルに上記コマンドを保存する必要があります。
$profile
で表示されたファイル
(基本的にはC:\Users\ユーザー名\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
)を作成。テキストエディタで上記コマンドを記述し保存します。
ni
コマンドを元の仕様に戻すときはこのファイルを削除します。
いずれの場合もシェル再起動後に変更が反映されます。
コマンド
ni
install
ni
# npm install
# yarn install
# pnpm install
# bun install
ni vite
# npm i vite
# yarn add vite
# pnpm add vite
# bun add vite
ni @types/node -D
# npm i @types/node -D
# yarn add @types/node -D
# pnpm add -D @types/node
# bun add -d @types/node
ni --frozen
# npm ci
# yarn install --frozen-lockfile (Yarn 1)
# yarn install --immutable (Yarn Berry)
# pnpm install --frozen-lockfile
# bun install --no-save
ni -g eslint
# npm i -g eslint
# yarn global add eslint (Yarn 1)
# pnpm add -g eslint
# bun add -g eslint
# これは作業ディレクトリに関係なく、デフォルトで使用しているPackage Managerを使用します。
nr
run
nr dev --port=3000
# npm run dev -- --port=3000
# yarn run dev --port=3000
# pnpm run dev --port=3000
# bun run dev --port=3000
nr
❯ nr
? script to run ›
❯ dev - vite dev
build - vite build
preview - vite preview
lint - eslint .
format - prettier --write .
# 実行するスクリプトを選択して実行することができます。
# https://www.npmjs.com/package/npm-scripts-infoのルールをサポート
nr -
# 最後に実行したコマンドを再実行します。
nix
execute
nix vitest
# npx vitest
# yarn dlx vitest
# pnpm dlx vitest
# bunx vitest
nu
upgrade
nu
# npm upgrade
# yarn upgrade (Yarn 1)
# yarn up (Yarn Berry)
# pnpm update
# bunでは使用できません。
nu -i
# yarn upgrade-interactive (Yarn 1)
# yarn up -i (Yarn Berry)
# pnpm update -i
# npmとbunでは使用できません。
nun
uninstall
nun webpack
# npm uninstall webpack
# yarn remove webpack
# pnpm remove webpack
# bun remove webpack
nun -g silent
# npm uninstall -g silent
# yarn global remove silent
# pnpm remove -g silent
# bun remove -g silent
nci
clean install
nci
# npm ci
# yarn install --frozen-lockfile
# pnpm install --frozen-lockfile
# bun install --no-save
na
agent alias
na
# npm
# yarn
# pnpm
# bun
na run foo
# npm run foo
# yarn run foo
# pnpm run foo
# bun run foo
Change Directory
ni -C packages/foo vite
nr -C playground dev
Config
# lockfileが存在しない場合に使用するPackage Manager
defaultAgent=npm
# グローバルインストールする場合に使用するPackage Manager
globalAgent=npm
# 設定ファイルのパス
export NI_CONFIG_FILE="$HOME/.config/ni/nirc"
さいごに
ni
を使用して、1つのコマンドで適切なPackage Managerを自動的に使用してくれる方法を紹介しました。
各プロジェクトのlockfileを読み取って、適切なPackage Managerを使用してくれるのが楽でいいですね!
打つ文字数が2~3文字と少ない文字数で実行できるのは魅力的ですね。
好き嫌いは分かれるかもしれませんが、普段からaliasを張って使ってる方は違和感なく使えるかもしれません。
是非、npm
、yarn
、pnpm
それぞれのコマンドを覚えるのに疲れた方は使ってみてください!