TECHSCORE BLOG

クラウドCRMを提供するシナジーマーケティングのエンジニアブログです。

npm、yarn、pnpm、bun を同じコマンドで使える ni の紹介

複数のパッケージマネージャーを使って混乱したことはありませんか?

みなさんはどのパッケージマネージャーをお使いですか?npm や yarn を使用している方も多いかと思います。複数のプロジェクトにまたがって作業をされている方は、様々なパッケージマネージャーを使い分けている方も珍しくはないでしょう。

開発者の間でよくある問題の一つに、異なる JavaScript プロジェクト間で使用されるパッケージマネージャーが統一されていないことが挙げられます。一部のプロジェクトでは npm を、他のプロジェクトでは yarn や pnpm など、さまざまなツールが使われています。これらのパッケージマネージャーはそれぞれに独自のコマンドセットを持っており、プロジェクトごとに適切なコマンドを使い分けなければなりません。

例えば yarn のプロジェクトで npm install してしまい、package-lock.json を作成してしまったことはないでしょうか?


😅

僕は頻繁にありました…。
このツールに出会うまでは。

そう、そこで今回ご紹介したいのが ni というツールです。
このパッケージの作者は実は Vue や Nuxt や Vite のコアチームの方で、antfu さんという方です。

複数のパッケージマネージャーを使うときの問題

  • パッケージマネージャーの違いによる混乱
    • 上記のような失敗です。
  • パッケージマネージャーごとにコマンドが異なる
    • npm, yarn, pnpm など、複数のパッケージマネージャー間でコマンドが異なり、プロジェクトごとに覚え直す必要がある。
  • 作業効率の低下
    • プロジェクトがどのパッケージマネージャーを使っているか把握しておかないといけないので、パッケージマネージャーのコマンドを実行するたびに意識しないといけない。

ni を使うと解決すること

  • 自動検出と実行
    • ni は、現在のプロジェクトに最も適したパッケージマネージャーを自動的に検出し、関連するコマンドを実行します。
  • シンプルなコマンド
    • ni を使用することで、npm install やyarn add などのコマンドを覚える必要がなくなります。ni はこれらを自動で解釈し、適切な操作を行います。
  • プロジェクト間のスムーズな移行
    • 異なるパッケージマネージャーを使用するプロジェクト間で作業する場合でも、ni を使えば同じコマンドセットで操作できます。

ni は、現代の JavaScript エコシステム内での開発者の生産性を向上させるために設計されたツールです。このツールにより、開発者はパッケージマネージャーの違いに振り回されることなく、より重要な開発作業に集中できるようになります。

ni の導入方法

ni は Node.js のパッケージとして利用できるため、今お使いのパッケージマネージャーを使用してインストールすることが可能です。ここでは npm を使用したインストール方法を示します。

npm i -g @antfu/ni

このコマンドは、ni をグローバルにインストールします。これにより、任意のプロジェクトディレクトリから ni コマンドを使用することができるようになります。

ni はインストール後、追加の設定なしで直ちに使用することができます。自動的に現在のプロジェクトのパッケージマネージャーを検出し、関連するコマンドを実行するための準備が整います。

ni の基本的な使用方法

使用できる機能や使用方法は今までのパッケージマネージャーと同じようなものになります。
ここでは基本的な使用方法を記載します。詳細については、上述の公式サイトを参照してください。

install 系

ni: パッケージのインストール

ni
# npm install
# yarn install
# pnpm install
# bun install

ni (package名): 特定のパッケージのインストール

ni vite

# npm i vite
# yarn add vite
# pnpm add vite
# bun add vite

ni (package名) -D: 開発依存関係へのパッケージのインストール

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 (package名) -g: グローバルへのパッケージのインストール

ni -g eslint

# npm i -g eslint
# yarn global add eslint (Yarn 1)
# pnpm add -g eslint
# bun add -g eslint

run 系

nr

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 -

# rerun the last command

download & execute

nlx

nlx vitest

# npx vitest
# yarn dlx vitest
# pnpm dlx vitest
# bunx vitest

upgrade

nu

nu

# npm upgrade
# yarn upgrade (Yarn 1)
# yarn up (Yarn Berry)
# pnpm update
# bun update

uninstall

nun

nun webpack

# npm uninstall webpack
# yarn remove webpack
# pnpm remove webpack
# bun remove webpack

clean install

nci

nci

# npm ci
# yarn install --frozen-lockfile
# pnpm install --frozen-lockfile
# bun install --no-save

終わりに

コマンドを見てもらえると、直感的でわかりやすく、またパッケージマネージャーのコマンドよりも短いんですよね。そのため一度使ってしまうともうパッケージマネージャーのコマンドを入力するということが、億劫になってしまうくらいよくできています。

たかがパッケージマネージャー、されどパッケージマネージャー。

よいパッケージマネージャーライフを!

平奥 真一(ヒラオク シンイチ)
趣味のお陰で、常にどこかが筋肉痛です。


シナジーマーケティング株式会社では一緒に働く仲間を募集しています。