React Nativeで開発を始める際、npmとnpxの違いに戸惑うことがあるので、備忘録。
npm (Node Package Manager)
npmは、Node.jsのパッケージを管理するためのツールで、以下の機能を持っています。
- パッケージのインストール: プロジェクトで使用するライブラリやツールをインストールする。
- 依存関係の管理: プロジェクト内のpackage.jsonファイルを通じて、使用しているパッケージとそのバージョンを管理する。
- スクリプトの実行: package.json内に定義されたスクリプトをnpm run スクリプト名で実行できる。
npx (Node Package Executer)
npxは、npm5.2から同梱されているツールで、パッケージをインストールせずにコマンドを実行できるため、以下の用途に適しています。
-
一時的なパッケージの実行: グローバルにインストールされていないパッケージでも、
npx <パッケージ名
>とすることで、即時ダウンロードして実行できる。 - 特定バージョンの実行: npx パッケージ名@バージョンと指定することで、特定のバージョンのパッケージを直接実行できる。
React Native開発における使い分け
React Nativeのプロジェクトを新規作成する際、npxを使用してreact-nativeコマンドを実行するのが一般的かと思われます。例えば、以下のコマンドで新しいプロジェクトを作成できたり、iOSビルドを実行してシミュレーターを起動したり。
npx react-native init MyNewProject
npx react-native run-ios
一方、npmはプロジェクト内で使用するパッケージのインストールや依存関係の管理に使用します。例えば、package.jsonの作成をしたり追加のライブラリをインストールしたり。
npm init
npm install <ライブラリ名> --save
npm install <ライブラリ名> --save-dev
npm installのみだと、package-lock.jsonの内容を読み取ってインストールします。
--save
と--save-dev
の違いは、前者はdependencies(=本番環境)に、後者はdevDependencies(=開発環境)にインストールされます。ちなみにそれらのオプションを省略した場合はdependenciesに追加されます。