web-dev-qa-db-ja.com

NPMでパッケージをインストールするときに、依存関係の1つの異なるバージョンを使用するようにパッケージに指示できますか?

依存関係を持つライブラリlib-adep-1およびdep-2をインストールするとします。 lib-aがpackage.jsonで古いdep-2のバージョンを使用するように宣言している場合(たとえば、出てきたばかりのノード0.8.0では動作しません)ノード0.8.0で動作するdep-2のブランチ-ブランチ名node0.8.0

したがって、方程式のパッケージは次のとおりです。

git://github.com/user-a/lib-a
git://github.com/user-b/dep-1
git://github.com/user-c/dep-2
git://github.com/user-c/dep-2#node0.8.0

NPMにlib-aをインストールするように指示する方法はありますが、dep-2#node0.8.0の代わりにdep-2を使用しますか?

NPMを使用すると、次のようなプロジェクトの特定のブランチをインストールできます。

npm install git://github.com/user-c/dep-2#node0.8.0

そして、lib-aのpackage.jsonをカスタマイズする場合、次のようにdep-2#node0.8.0を使用するように指示できます。

{
  "name": "lib-a",
  "dependencies": {
    "dep-1": ">= 1.5.0",
    "dep-2": "git://github.com/user-c/dep-2#node0.8.0"
  }
}

Package.jsonを変更することにより、実行できます

npm install lib-a

そして、ノード0.8.0互換dep-2ブランチをインストールします。しかし、それにはlib-aを変更するためのアクセス権が必要です。これは私の特定のケースではそうではありません。技術的には、lib-aを分岐し、package.jsonに上記の変更を加えることができます。しかし、私の特定のケースでは、lib-aanother libraryの依存関係であるため、参照されているプロジェクトをフォークする必要があります...

質問は、NPMにlib-aをインストールし、node0.8.0dep-2ブランチを使用するように指示する方法はありますか?このようなもの:

npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0

それは素晴らしいことです。それが不可能な場合は、知っておくといいので、プロジェクトのチェーンをフォーク/カスタマイズする必要があるように準備できます。

60
Lance Pollard

NPMインストール構文:

npm install (with no args in a package dir)
npm install <tarball file>
npm install <tarball url>
npm install <folder>
npm install [@<scope>/]<name> [--save|--save-dev|--save-optional] [--save-exact]
npm install [@<scope>/]<name>@<tag>
npm install [@<scope>/]<name>@<version>
npm install [@<scope>/]<name>@<version range>
npm i (with any of the previous argument usage)

したがって、これらの方法のいずれかを選択してモジュールをインストールできます。

特定のバージョンをインストールする最も簡単な方法は次のとおりです。

npm install [email protected]

詳細: https://docs.npmjs.com/cli/install

46
micnic