【Node.js入門】npmとnpxの違い
はじめに
はじめまして!入社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 を使用してテストが実行されます。
"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