2016-12-08 4 views
0

私は、特定のバージョンのnpmパッケージに依存するレガシープロジェクトを持っています。これは、依存関係チェインを介して特定のnpmパッケージのphantomjsに依存します。これにより、プロジェクトのビルドが中断されます。url npmを上書きしてパッケージを取得できますか?

パッケージのバージョンのアップデートはオプションではありません。

必要なバージョンのphantomjsを手作業で取得してシステムのダウンロードフォルダにドロップすることで、npmを欺くことができますが、これは回避策です。私はよりクリーンな修正が望ましく、理想的には設定スクリプトに含まれています。

私のプロジェクトのpackage.jsonまたは.npmrcファイルで、プロジェクトに「npm install」が実行されるたびにnpmがパッケージのいくつかのバージョンに別のURLを使用できるようにすることはできますか?

答えて

0

NPMドキュメントのように進行するためにパッケージをアップロードしています。基本的には、npm-shrinkwrap.jsonファイルをpackage.jsonとともにプロジェクトに追加します。シュリンクラップファイルでは、package.jsonにリストされている特定のパッケージを上書きすることができます。そのパッケージの依存関係チェーンのどこにでも依存パッケージをフェッチするURLを指定します。

{ 
    "name": "MyProject", 
    "dependencies": { 
    "A" : { 
     "version" :"1.2.1", 
     "dependencies": { 
     "B": { 
     "version": "https://myBForkUrl.git" 
     } 
    } 
    } 
} 

MyProjectとは順番にBに依存しますが、Bはメンテナンスされていないで、重大なバグがあり、パッケージA、上depeneds場合、私は、Bの私自身のフォークをロールバグを修正し、https://myBForkUrl.gitでそれをホストすることができ、なしまた、Aをフォークする必要があります。NPMのドキュメントに基づいて、このオーバーライドは必要な深さまでネストすることができます。

0

可能な解決策は、私は、これがNPM-シュリンクラップ(https://docs.npmjs.com/files/package-locks)を使用可能であることを考え出しGitHubのとhttps://docs.npmjs.com/files/package.json#urls-as-dependencies

+1

私は具体的な問題は、パッケージ(phantomjs)は別の依存関係の依存関係だと思うので、トップレベルの依存関係にURL/gitリンクを追加することは役に立ちません。その間の依存関係は依然として間違ったバージョンを指しています。 – Matthias247

関連する問題