私はちょうどnpm version 3にアップグレードしました。最も大きな変更の1つは、flat dependency treeを強制することです。どのようにnpm 3にネストされた依存関係を強制的にインストールできますか?
依存関係は最大限にフラットにインストールされます。可能な限り、すべての依存関係とその依存関係、およびその依存関係は、プロジェクトの
node_modules
フォルダーに入れ子なしでインストールされます。 2つ(またはそれ以上)のモジュールが矛盾する依存関係を持つ場合には、モジュールは互いに重なり合うようにネストされます。例えばので
あなたはこのファイル構造を取得しますnpm install A
時にパッケージは、パッケージBに依存している場合:
--- root/
|--- node_modules/
|--- A/
|--- B/
代わりに古いファイル構造のバージョン2または下から:
--- root/
|--- node_modules/
|--- A/
|--- node_modules/
|--- B/
最初の(と私は最後ではないと確信している)私はに走った問題は、このでした:
パッケージはnpm v3の動作を認識せず、パッケージBに依存しています。しかし、は、適切な../node_modules/B
ではなく、コードにnode_modules/B
があるため、古い(v2)ファイル構造を前提としています。 のコードは、間違ったディレクトリにB/
を探しているのでコンパイルされません。私は、コードを修正するために、開発者をしつこいとの更新を待っているような気がしない場合は
、私は年代をインストールするために、私は、NPMを強制するオプションを設定することができる方法があるのかしら独自のnode_modules
フォルダ内の依存関係は、npm v2と同じ方法で行いました。
私は同じ問題を抱えていました。この問題を解決するには、cd node_modules/A && npm install'、cd node_modules/A/node_modules/B && npm install'など...私が理解したところから、すべてのパッケージはnpm 3.0で動作する前に依存関係を処理する新しい方法に従わなければなりません。 – Gabin
@ガビン私が知っている限り、あなたは正しいです。依存関係を悪夢にアップグレードする。 – chharvey