Node.js で別フォルダのパッケージの依存関係をインストールする方法
Node.js の npm
で別のフォルダのパッケージの依存関係をインストールする方法
Node.js の npm
を使って、別のフォルダにあるパッケージの依存関係をインストールするには、主に以下の 2 つの方法があります。
npm install
コマンドと-g
オプションを使うnpm link
コマンドを使う
それぞれの方法について、詳しく説明します。
この方法は、グローバルにインストールされている npm
コマンドを使って、別のフォルダにあるパッケージの依存関係をインストールします。
手順
- ターミナルを開きます。
- 以下のコマンドを実行します。
npm install -g <package-name>
<package-name>
は、インストールしたいパッケージの名前です。
例
npm install -g ../my-package
このコマンドは、../my-package
フォルダにある my-package
パッケージと、そのパッケージの依存関係をすべてグローバルにインストールします。
注意点
- グローバルにインストールされたパッケージは、複数のプロジェクトで使用することができますが、プロジェクトごとに異なるバージョンのパッケージを使用したい場合は、この方法は適していません。
- この方法を使うと、インストールしたパッケージは、プロジェクト内の
node_modules
フォルダではなく、グローバルなnode_modules
フォルダにインストールされます。
この方法は、npm link
コマンドを使って、別のフォルダにあるパッケージをプロジェクトにシンボリックリンクします。シンボリックリンクとは、あるファイルやフォルダを別のファイルやフォルダに結びつける方法です。
- 以下のコマンドを実行して、シンボリックリンクを作成します。
npm link <package-path>
<package-path>
は、シンボリックリンクを作成したいパッケージのパスです。
npm link ../my-package
このコマンドは、../my-package
フォルダにある my-package
パッケージを、現在のプロジェクトの node_modules
フォルダにシンボリックリンクします。
- 以下のコマンドを実行して、依存関係をインストールします。
npm install
このコマンドは、package.json
ファイルに記載されているすべての依存関係をインストールします。
- シンボリックリンクされたパッケージを別のプロジェクトで使用するには、そのプロジェクトでも
npm link
コマンドを実行する必要があります。 - シンボリックリンクされたパッケージは、プロジェクト内の変更の影響を受けます。
- この方法を使うと、インストールしたパッケージは、プロジェクト内の
node_modules
フォルダにインストールされます。
どちらの方法を使うべきか
どちらの方法を使うべきかは、以下の要素によって異なります。
- プロジェクト内の変更がインストールしたパッケージに影響を与えてもよいかどうか
- 影響を与えてもよい場合は、
npm link
コマンドを使う方法が適しています。 - 影響を与えてはいけない場合は、
npm install
コマンドと-g
オプションを使う方法が適しています。
- 影響を与えてもよい場合は、
- インストールしたパッケージを複数のプロジェクトで使用したいかどうか
- プロジェクトごとに異なるバージョンのパッケージを使用したい場合は、
npm link
コマンドを使う方法が適しています。
- プロジェクトごとに異なるバージョンのパッケージを使用したい場合は、
- 依存関係をインストールする前に、必ず
package.json
ファイルを確認して、必要な依存関係がすべて記載されていることを確認してください。 - 上記以外にも、
npm
には、別のフォルダにあるパッケージの依存関係をインストールするためのオプションやコマンドがあります。詳細は、npm
のドキュメントを参照してください。
# 現在のプロジェクトディレクトリ
project-dir
├── package.json
└── src
├── index.js
# 別のフォルダにあるパッケージディレクトリ
package-dir
├── package.json
├── src
│ └── my-package.js
└── node_modules
- ターミナルを開き、
package-dir
ディレクトリに移動します。 - 以下のコマンドを実行して、
my-package
パッケージをビルドします。
npm run build
- 以下のコマンドを実行して、
my-package
パッケージをproject-dir
ディレクトリにシンボリックリンクします。
npm link ../project-dir
npm install
index.js ファイル
const myPackage = require('my-package');
console.log(myPackage.message);
このコードを実行すると、以下の出力が表示されます。
Hello from my-package!
説明
myPackage.message
プロパティには、my-package
パッケージから取得したメッセージ文字列が含まれています。index.js
ファイルは、require()
ステートメントを使用してmy-package
パッケージをインポートします。npm link
コマンドを実行すると、project-dir
フォルダ内のnode_modules
フォルダにmy-package
パッケージへのシンボリックリンクが作成されます。- この例では、
my-package
パッケージはpackage-dir
フォルダにあります。
この方法は、npm install
コマンドと --prefix
オプションを使って、別のフォルダにあるプロジェクトの node_modules
フォルダにパッケージをインストールします。
npm install --prefix <path-to-project> <package-name>
<path-to-project>
は、プロジェクトのパス、<package-name>
は、インストールしたいパッケージの名前です。
npm install --prefix ../my-project my-package
このコマンドは、../my-project
フォルダにある my-project
プロジェクトの node_modules
フォルダに my-package
パッケージと、そのパッケージの依存関係をすべてインストールします。
- このコマンドは、
npm link
コマンドよりも安全に使用できます。なぜなら、シンボリックリンクを作成する代わりに、実際にパッケージをインストールするからです。
npm pack と npm install コマンドを組み合わせる
この方法は、npm pack
コマンドを使って、別のフォルダにあるパッケージを tar.gz
アーカイブファイルにパッケージングし、その後、npm install
コマンドを使ってそのファイルをインストールします。
- ターミナルを開き、パッケージディレクトリに移動します。
- 以下のコマンドを実行して、パッケージを
tar.gz
アーカイブファイルにパッケージングします。
npm pack
- 以下のコマンドを実行して、
tar.gz
アーカイブファイルをインストールします。
npm install <path-to-archive-file>
<path-to-archive-file>
は、tar.gz
アーカイブファイルのパスです。
# パッケージディレクトリ
package-dir
├── package.json
└── src
└── my-package.js
# プロジェクトディレクトリ
project-dir
├── package.json
└── src
└── index.js
上記の手順を実行すると、my-package
パッケージと、そのパッケージの依存関係が project-dir
プロジェクトの node_modules
フォルダにインストールされます。
npm pack
コマンドは、常に最新のバージョンのパッケージをパッケージングするとは限りません。- この方法は、上記の方法よりも複雑です。
手動でファイルをコピーする
この方法は、別のフォルダにあるパッケージのファイルをを手動でプロジェクトの node_modules
フォルダにコピーします。
- パッケージディレクトリの
node_modules
フォルダを開きます。 - コピーしたいパッケージのフォルダを、プロジェクトの
node_modules
フォルダにコピーします。
# パッケージディレクトリ
package-dir
├── node_modules
│ └── my-package
└── src
└── my-package.js
# プロジェクトディレクトリ
project-dir
├── node_modules
└── src
└── index.js
- 手動でファイルをコピーする前に、必ずパッケージのドキュメントを確認してください。
- この方法は、最も時間がかかり、エラーが発生しやすい方法です。
npm
で別のフォルダのパッケージの依存関係をインストールするには、様々な方法があります。どの方法を使うべきかは、状況に応じて異なります。
- ファイル数が少ない場合は、手動でファイルをコピーする方法を使用することもできます。
- パッケージの最新バージョンを確実にインストールしたい場合は、
npm pack
とnpm install
コマンドを組み合わせる方法を使用できます。 - 複数のプロジェクトで同じパッケージを使用したい場合は、
npm link
コマンドを使うことができます。
node.js npm