コンピューターに「npm_lazy」などのローカル npm ミラーをセットアップすることを検討しています。しかし、ローカルミラーではうまく機能しないnpm install
ようです。npm shrinkwrap
説明させてください。npm-shrinkwrap.json
ファイルがある場合、npm install
コマンドは常に、shrinkwrap ファイルの"resolved"
プロパティで指定された URL からパッケージを要求します。したがって、ローカル npm ミラーを で実行していてhttp://localhost:12345/
も、それをレジストリとして使用するように npm を構成しても、ローカル ミラーからパッケージ モジュールを要求することはありません"resolved"
( shrinkwrap ファイル内のプロパティがたまたま を指していない限りhttp://localhost:12345/
) 。 .
基本的に、npm install
npm のレジストリ設定を無視し、shrinkwrap"resolved"
プロパティに従います。
依存パッケージ名とバージョンで動的に構築する代わりにプロパティをnpm install
使用する理由はありますか? "resolved"
npm-shrinkwrap.json にこのフィールドがあるのはなぜですか?
それでは、私の問題に戻ります。npm_lazy をローカル npm ミラーとして使用したいと考えています。を指すようにすべての"resolved"
URL を書き換えることができます。しかし、その場合、私のシュリンクラップ ファイルは移植性が低くなります。同僚のコンピューターで同じ npm_lazy サーバーが実行されていない限り、同僚は使用できません。npm-shrinkwrap.json
http://localhost:12345/
透過的なミラーを作成するために、すべてのregistry.npmjs.org
トラフィックをにリダイレクトすることを検討しました。localhost
しかし、それは難しすぎるでしょう -- HTTPS をサポートする必要があります。また、npm_lazy はどのようにして真のドメインにアクセスするのでしょうか? 変更される可能性がある IP アドレスで指定する必要があります。
ローカル コンピューターの NPM キャッシュをセットアップするために、他の誰かが同じことを試みましたか? しかし、私の主な質問は、なぜ npm が「解決済み」プロパティを使用するのですか? ありがとう。