起動時にEC2インスタンスにいくつかのnpmパッケージ(具体的には--global
でインストールしたいカルマ)を自動的にインストールするスクリプトがあります。問題は、npmが時々ランダムに失敗することです。おそらくネットワークの問題が原因ですが、何が起こっているのかは完全にはわかりません。
ネットワークを除外するには、npmに関連するファイルをダウンロードし、S3からダウンロードするときに、ファイルに基づいてカルマをインストールするように要求します。
しかし、どうすればよいですか?中央リポジトリからファイルを取得せず、代わりに他の場所からファイルを取得するようにnpmに指示するにはどうすればよいですか?
最初にnpmbox
モジュールをグローバルにインストールする必要があります。このモジュールは、指定されたモジュールのすべての依存関係を持つオフラインパッケージを作成します。次に、npmunbox
コマンドを使用して、そのパッケージをオフラインマシンにインストールできます。
Npmboxをインストールするには:npm install -g npmbox
モジュールのオフラインパッケージを作成するには:npmbox -v localtunnel
、現在のディレクトリにlocaltunnel.npmbox
ファイルを生成します。オフラインマシンにコピーします。
オフラインパッケージをインストールするには:npmunbox localtunnel.npmbox
PM2オフラインをインストール:-
RHEL-7のNode-v6.10.3およびNpm-3.10.10でテスト済み
インターネット接続のあるマシンに移動します:-
#npm install -g npmbox
#npmbox npmbox
#scp npmbox.npmbox root@offline-server-ip:.
インターネットに接続せずにマシンに移動します:-
#ssh root@offline-server-ip
#tar --no-same-owner --no-same-permissions -xvzf npmbox.npmbox
#npm install --global --cache ./.npmbox.cache --optional --cache-min 99999999999 --shrinkwrap false npmbox
インターネット接続のあるマシンに移動します:-
#npm install pm2 -g
#npmbox pm2
#scp pm2.npmbox root@offline-server-ip:.
インターネットに接続せずにマシンに移動します:-
#npmunbox pm2.npmbox --global
#pm2 ls
私はシンプルで透過的なツールを書きましたnpm install
npmのオフラインキャッシュを使用する