ローカルにダウンロードしたnpmでnpmコマンドを実行する方法

こんにちは。 エキサイト株式会社の三浦です。

JavaScriptやTypeScriptでプロジェクトを作る上で、 npm は必須なツールの一つと言えるでしょう。

PCにグローバルにダウンロードして使うことも出来ますが、場合によっては特定のローカルなディレクトリにダウンロードして使いたくなることもあるかもしれません。

今回は、ローカルなディレクトリに npm をダウンロードして npm コマンドを使う方法を紹介します。

npmとは

npm は、JavaScriptやTypeScriptで使われるパッケージ管理ツールです。

様々なライブラリについて、種類やバージョンを指定してダウンロードできるようにしてくれるもので、プロジェクトを管理していく上で必須なツールと言えます。

また、単にライブラリをダウンロードするだけでなく、任意のコマンドを実行させることも出来ます。

類似のツールとして yarn というものも存在します。

npm の使い方は簡単です。

例えば、 sample-library というライブラリをダウンロードしたい場合は以下のようにコマンドを実行します。

npm install sample-library

package.json ファイルという、ダウンロードするライブラリ等をまとめたファイルが存在すれば、以下のコマンドだけですべてのライブラリをダウンロードしてくれます。

npm install

この npm は現在でも開発が進められており、定期的にバージョンアップしています。

そのため、場合によっては、「このプロジェクトでは特定のバージョンの npm を使いたい」という場面も出てくるでしょう。

そういった状況だと、単にPCにグローバルに npm をダウンロードするだけでは、PC全体で npm のバージョンが固定されてしまうので問題があります。

これを解決するためには、以下の方法が考えられます。

  1. npm のバージョンを管理してくれるツール」を使うことで、プロジェクトごとに npm のバージョンを切り替える
  2. ローカルのディレクトリに npm をダウンロードして、それを使用する

今回は、後者の方法について説明します。

ローカルにダウンロードしたnpmでnpmコマンドを実行する方法

さて、実は npm コマンドは、 npm というものさえあれば実行できるというものではありません。

npm コマンドを実行する本体である npm ファイルは実はJavaScriptで出来ているため、それを実行するための環境が必要になるのです。

それを実現してくれるのが node です。

nodejs.org

上記のダウンロードページに書いてあるように、そもそも npm はダウンロード時に node に同梱されています。

npm をダウンロードする過程で、 node もダウンロードできるようになっているのです。

先程、 npm コマンドは以下の方法で実行できると説明しました。

npm install

これだけを見ると node が必要そうには見えませんが、これは裏側で npmnode を自動的に探し、発見して使ってくれているのです。

実態としては、以下のようになっています。

// node を使って npm を実行し、その npm で install を行う
node npm install

それを踏まえると、ローカルにダウンロードした npm を使って npm コマンドを実行する方法は以下が考えられます。

node npm install というコマンドを実行するようにする

先程説明したように、実態としては npm コマンドは以下のように実行されています。

node npm install

これをシンプルにそのまま使います。

つまり、 npmnode/path/to/bin というディレクトリ配下にダウンロードされている場合、以下のように実行するのです。

/path/to/bin/node /path/to/bin/npm install

これで、ローカルにダウンロードした npmnode で、 npm コマンドを実行することが出来ます。

ただし、これだと問題が起きる場合もあります。

npm コマンドは、単純にライブラリのインストールだけでなく様々なことを実行することが出来ます。

例えば、 npm コマンドを通して別のJavaScriptファイルを実行することもできるのですが、その実行したいJavaScriptにも node が必要な場合、そちらは node を見つけることが出来ずエラーになってしまう場合があるのです。

その場合は、次の方法で解決することが出来ます。

node のパスを通す

そもそも node を実行する必要があるJavaScriptファイルは、最初に自動的に node を探し、発見したらそれを使ってくれるようになっています。

通常ローカルにダウンロードされた node はその探し場所に含まれていないために発見されないのですが、逆に言えば探し場所に含ませさえすれば、自動的に発見・使用してくれるようになるのです。

以下のコマンドで、その探し場所に追加できます。

// /path/to/bin というディレクトリ内に node が入っている場合
export PATH=/path/to/bin:$PATH

こうすれば、後は以下のコマンドで問題ありません。

// npm も node と同じディレクトリにあるなら、パスを指定する必要はない
npm install

最後に

JavaScriptやTypeScriptは、今やフロントエンド・バックエンド問わず選択肢として上げられることの多い言語の一つであり、そのため npm の出番も少なくありません。

今回の記事が役に立てば幸いです。