🙄

【Node.js入門】npmとnpxの違い

2024/03/13に公開

はじめに

はじめまして!入社1年目の超絶見習いエンジニアです。
環境構築の過程で、 npm と npx という言葉が出てきました。その時はとりあえず環境構築が完了すればいいやと思い、 npm や npx から始まるコマンドをただただ入力して叩いていました。
しかしその後、これらの違いについて興味を持ち調べたところそれぞれにきちんと意味があることが分かったのでまとめてみました。

npm(Node Package Manager)

Node.js のパッケージ管理ツールで Node.js アプリケーションの開発において、依存関係の解決やパッケージのインストール、アップデート、削除などの機能を提供します。

パッケージ・依存関係の管理

コマンドを使ってパッケージのインストールやアンインストール、アップデートなどができます。
依存関係の管理とは、簡単に言うとそのアプリケーションがどのパッケージのバージョンに依存しているかを管理しているということです。

$ npm install xxx
$ npm uninstall xxx
$ npm update xxx

スクリプト実行

package.jsonの scripts に記述されたスクリプトを実行することができます。

$ npm run xxx

サーバー起動やテストするときによく見るやつですね!

例えば、package.jsonに下記のように記述してnpm run testを実行すると jest を使用してテストが実行されます。

package.json
"scripts": {
    "test": "jest"
  },

npx(Node Package Execute)

npx は Node.js パッケージを実行するためのツールです。

一時的な実行

インストールされてないパッケージでも自動的に探してインストールして実行して、実行が完了するとインストールしたパッケージの削除をします。
これによりパッケージをローカルにインストールする必要がなくなるので、開発環境を汚さずにパッケージを試したり、複数バージョンのパッケージを管理できます。

$ npx xxx

パッケージの指定

特定のバージョンのパッケージを実行することも可能です。
これにより別のバージョンのパッケージを切り替えて実行することができます。

$ npx xxx@1.0.3

npm と npx の比較

機能 npm npx
主な役割 パッケージ管理 パッケージ実行
インストール 必要 不要
依存関係 管理する 管理しない
バージョン管理 可能 可能
一時的な利用 不向き 得意
グローバルパッケージ 競合 共存

使い分け

npm は、以下のような用途に適している

  • プロジェクトで使用するパッケージをインストール、管理する場合
  • 依存関係を管理する場合
  • スクリプトを実行する場合

npx は、以下のような用途に適している

  • 一時的にパッケージを試したい場合
  • 特定のバージョンのパッケージを実行したい場合
  • 複数のグローバルパッケージを同時に使用したい場合

まとめ

今回は npm と npx の違いについてざっくりとまとめてみました。2つの違いについてなんとなく理解していただけていれば幸いです!
npm はパッケージと依存関係の管理を行う。npx はパッケージを実行するツール(インストールの有無は関係ない)。
npx は npm のinstallをスキップして npm run を実行できるよと考えるとイメージしやすいのではないでしょうか。
それぞれもっと細かく理解したい方は他の方の記事を参考にしてみてください!

参考

ユニフォームネクスト株式会社

Discussion