参考:Manorisms
歴史的には、npm init
コマンドは新しい package.json
ファイルを作成するために主に使用されていました。しかし、npm v6.1.0では、<イニシャライザ>と呼ばれる npm init
の新機能を使うことができます。npm
は指定したイニシャライザの名前の前に create-
を付け、そのプロジェクトを一時的にインストールして実行するために npx
を使用します。
インストールしている npm
のバージョンに応じて、npm
パッケージとのやりとりにはさまざまな方法があります。これらの違いを見るために、React アプリケーションを起動するための create-react-app
パッケージとのやりとりに焦点を当ててみましょう。
古いバージョンの npm (5.1.0 以下) を使用している場合、create-react-app を使用する際のオプションはあまりありません。 基本的には creat-react-app をグローバルにインストールし、それを使ってアプリを起動することに制限されます。
npm install create-react-app -g
create-react-app playground
上記は、npmのレジストリからcreate-react-appをグローバルにインストールし、グローバルパッケージを利用してアプリケーションをブートストラップします。
長所
- これは
npm
のどのバージョンでも動作します - 一度インストールしてしまえば、再インストールする必要はありません。
欠点
create-react-app
のバージョンが古くなっている可能性があります。
npm のバージョンが 5.2.0 以上の場合は、npm に同梱されている npx ツールを使うことができます。
npx は (特に) グローバルにインストールされていないパッケージを一時的にインストールします。 これは、パッケージを試してみたい場合や、パッケージを実行する頻度が低い場合に、常に最新のバージョンを使用したい場合に便利です。
npx create-react-app playground
上記のスニペットは、npmのレジストリからcreat-react-appを一時的にインストールし、アプリケーションを起動するために実行します。
長所
- 常に最新版を持っている
- グローバルにパッケージをインストールする必要はありません。
欠点
- グローバルにインストールされたパッケージを使用する(1の方法)よりは遅い
最後に、かなり新しいバージョンの npm (バージョン 6.1.0 以上) をお持ちの場合、アプリを初期化する最新の方法があります。 npm の init コマンドは何年も前からありましたが、6.1.0 からは新しい オプションが追加され、アプリの作成や更新にこのコマンドを使いたいことを npm に知らせることができます。
このオプションを使うと、npm は提供されたイニシャライザの前に creat- を付加し、npx ツールを使ってインストールして実行します (上で説明したように)。
npm init react-app playground
上記のスニペットは、npmのレジストリからcreat-react-appを探して、アプリケーションをブートストラップするためにnpxでインストールして実行します。
長所
- プロジェクトを初期化しているという意図が分かりやすい
- npxを直接呼び出す(2の方法)よりも数文字短い
- 常に最新版を持っている
- グローバルにパッケージをインストールする必要はありません。
欠点
- グローバルにインストールされたパッケージを使用する(1の方法)よりは遅い