2017-07-12 22 views
4

TL; DR:パッケージの依存関係の依存関係を別のパッケージに変更するにはどうすればよいですか?たとえば、パッケージAの依存関係パッケージBをパッケージCに変更したいが、パッケージAのみに変更したい(つまり、パッケージAの依存関係を上流に変更したくない)。npmが依存関係の依存関係を別のパッケージに解決させるにはどうすればよいですか?


私はLeafletのプラグインを作成しています。リーフレットはNPMパッケージとして提供されています(また、完成したら私のプラグインもあります)。私のプラグインが拡張する別のプラグインもあります。Esri-Leafletには、リーフレットが依存しています。

マイプラグインでは、自分のコードのテストフレームワークとしてMocha/Chai/Sinonを使用しています。開発中とCIの一部としてNPMスクリプトを使ってこれらのテストを実行します。

リーフレットに依存するテストを実行すると、残念ながらリーフレットはヘッドレスノード環境では利用できないグローバル数(windowなど)に依存するため、いくつかのエラーが発生します。幸いなことに、leaflet-headlessと呼ばれる代替パッケージthat was suggestedがあります(興味がある場合は実際にはpretty interesting to seeです)。

私のパッケージのために、Esri-Leafletの依存関係を解決するときに、NPMにリーフレットの無人のリーフレットを使用するよう指示する方法はありますか?つまり、下流のリーフレットの依存関係を削除するか(私のプロジェクトはすでにリーフレットに依存しているので、ヘッドレスにするか)、それをリーフレットなしに変更します。

私はnpm shrinkwrapを見ましたが、実際のパッケージの依存関係を変更するのではなく、バージョン番号のみを指定できるようです。

私が求めている機能をNPMに持たない場合は、代替ソリューションをお勧めできますか?リーフレットヘッドレスの必要性を排除するためにリーフレット上流のグローバルに依存することをすでに検討しています。

答えて

0

これは、使用しているノードのバージョンによっては動作するかもしれないし、動作しないかもしれませんが、同じ名前のパッケージを使ってノード8でも同様のことができました。

パッケージを同じ名前にする必要がある場合は、プロジェクトをフォークし、フォークの名前を同じに変更します(この場合はleaflet-headless - >Leaflet)。

あなたのフォークを持っていたら、パッケージlock.jsonを持っている場合、あなたはgithubのにEsri-Leafletポイントを見て、いない元Leafletプロジェクトべきで

dependencies: { 
    "Leaflet": "username/Leaflet" 
} 

あなたのpackage.jsonに次のように書きます依存として。

関連する問題