Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save utamori/8a7eb6e710725ab7dc6bc0dfa61b04b8 to your computer and use it in GitHub Desktop.
Save utamori/8a7eb6e710725ab7dc6bc0dfa61b04b8 to your computer and use it in GitHub Desktop.

参考:Manorisms

npmの三つのやり方

歴史的には、npm init コマンドは新しい package.json ファイルを作成するために主に使用されていました。しかし、npm v6.1.0では、<イニシャライザ>と呼ばれる npm init の新機能を使うことができます。npm は指定したイニシャライザの名前の前に create- を付け、そのプロジェクトを一時的にインストールして実行するために npx を使用します。

npmでcreate-nuxt-appを使う3つのやり方

インストールしている npm のバージョンに応じて、npm パッケージとのやりとりにはさまざまな方法があります。これらの違いを見るために、React アプリケーションを起動するための create-react-app パッケージとのやりとりに焦点を当ててみましょう。

1. npm <= 5.1.0

古いバージョンの 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のバージョンが古くなっている可能性があります。

2. npm >= 5.2.0

npm のバージョンが 5.2.0 以上の場合は、npm に同梱されている npx ツールを使うことができます。

npx は (特に) グローバルにインストールされていないパッケージを一時的にインストールします。 これは、パッケージを試してみたい場合や、パッケージを実行する頻度が低い場合に、常に最新のバージョンを使用したい場合に便利です。

npx create-react-app playground

上記のスニペットは、npmのレジストリからcreat-react-appを一時的にインストールし、アプリケーションを起動するために実行します。

長所

  • 常に最新版を持っている
  • グローバルにパッケージをインストールする必要はありません。

欠点

  • グローバルにインストールされたパッケージを使用する(1の方法)よりは遅い

3. npm >= 6.1.0

最後に、かなり新しいバージョンの 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の方法)よりは遅い
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment