LoginSignup
109
60

More than 1 year has passed since last update.

npm、yarn、pnpm それぞれのコマンドを覚えるのに疲れた方へ

Last updated at Posted at 2023-03-06

はじめに

皆さんはnpm, yarn, pnpmどのPackage Managerを使っていますか?
yarnしか使わない!という方もいるかもしれませんが、pnpm評判いいみたいだし使ってみようかなとか、チーム開発では安定のnpmなんだよなとか、複数のPackage Managerを使用するケースって少なくないかと思います。
そういった場合、それぞれのコマンドを覚えるのも面倒ですし、プロジェクトに応じて頭の切り替えをしないといけないのは大変です。
本記事は、そういった悩みを解決する方法を紹介します。

ni

ninpm,yarn,pnpm,bunに対応していて、それぞれのlockfileを読み取って、適切なコマンドを実行してくれるPackage Managerです。
niのコマンドは短く、わかりやすいのですぐ覚えられると思います。
ちなみに、作者はVueやNuxt、ViteなどのコアチームメンバーのAnthony Fu氏です。

インストール

npm i -g @antfu/ni
Windows PowerShellで発生するコマンド競合の対策

Windows PowerShellでは既定でniNew-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

~/.nirc
# lockfileが存在しない場合に使用するPackage Manager
defaultAgent=npm

# グローバルインストールする場合に使用するPackage Manager
globalAgent=npm
~/.bashrc
# 設定ファイルのパス
export NI_CONFIG_FILE="$HOME/.config/ni/nirc"

さいごに

niを使用して、1つのコマンドで適切なPackage Managerを自動的に使用してくれる方法を紹介しました。
各プロジェクトのlockfileを読み取って、適切なPackage Managerを使用してくれるのが楽でいいですね!
打つ文字数が2~3文字と少ない文字数で実行できるのは魅力的ですね。
好き嫌いは分かれるかもしれませんが、普段からaliasを張って使ってる方は違和感なく使えるかもしれません。
是非、npmyarnpnpm それぞれのコマンドを覚えるのに疲れた方は使ってみてください!

109
60
2

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
109
60