パッケージとキャッシュを使用した5分でのローカルNPMリポジトリ

良い一日!

遅かれ早かれ、組織はプロジェクト間でjsモジュールを配布する際に問題を抱えており、当社でこの疑問が生じたときが来ました。

コードをコピーして貼り付けることは、暗黒面への道なので、jsコードだけでなく、それからnpmパッケージを作成してプロジェクト間で配布することが決定されました。

無料のプライベートnpmリポジトリの検索は行き詰まり、 npmでプライベートリポジトリを使用するには料金がかかります(これは私たちの考え方ではありません)。

オフィスには常に(ほぼ)動作するサーバーがあるため、ローカルnpmを展開することが決定されました。

画像

人気のあるローカルnpmリポジトリのデバイスは非常にシンプルで単調です。Verdaccioを選択したのは、その更新が比較的最近公開されたためです。

これは主にNode.js> 4にインストールされ、特定のポートへのWebインターフェースを提供するnpmパッケージです。

巨大なプラスは、ローカルnpmが要求されたパッケージを見つけられない場合、npmjs.comに移動し、必要なパッケージをディスクにダウンロードし、このパッケージの要求が繰り返されると、既にキャッシュされたバージョンを配布するキャッシング機能です。

それで、セットアップする。

サーバーとなるマシンで:

npm i -g verdaccio 

ファイルC:\ Users \ lab \ AppData \ Roaming \ verdaccio \ config.yamlにはサーバーパラメータがあります

デフォルトのパラメーターは実行可能で、何も変更することはできません。ファイルの最後に設定を追加するだけで、どのVerdaccioがどのポートでリッスンするかを理解します。

 listen: 192.168.51.79:1234 

192.168.51.79はIPサーバーであり、IPサーバーを介してローカルネットワークからアクセスできるようにアドレスを設定するか、そのDNS名とポート1234を追加してWebインターフェースにアクセスします。

listen:192.168.51.79:80を登録する場合、クライアントを構成するときにポートを書き込む必要はありません。

次に、ローカルnpmを実行します

 verdaccio 

残りのアクションはクライアントで実行されます。

ローカルリポジトリへのパスを設定します。

 npm set registry http://192.168.51.79:1234 

これで、すべてのnpm要求がローカルサーバーを介してキャッシュされます。

npmパッケージをサーバーに公開する必要がある場合は、以下の手順に従ってください。

ユーザーを作成

 npm adduser --registry http://192.168.51.79:1234 login password mail@mail.ru 

ログイン

 npm login password bezrukov@mir-omsk.ru 

ユーザー「ログイン」の下にいることを確認します

 npm whoami 

パッケージを公開します。rootProjectFolderは少なくとも3つのファイルを含むフォルダーですindex.js \ package.json \ README.md、 例はgithubに投稿されています。

 cd /rootProjectFolder npm publish 

パッケージを更新します。 package.jsonのバージョンを更新し、コマンドを実行します

 cd /rootProjectFolder npm publish 

ローカルサーバー上のパッケージ、 192.168.51.79 :1234に移動して、新しいパッケージがあることを確認できます。

ところで、各パッケージに関する情報は便利な形式で表示され、ローカルパッケージの検索があります。

画像

PS:ネットワークにプロキシがある場合、サーバー上でパラメータを明示的に指定する必要がありますが、npmリポジトリはローカルであり、クライアントにアクセスするためのプロキシサーバーは必要ないため、クライアントでこれを行う必要はありません。

サーバーで、 npm config editコマンドを実行し、次の行を追加します

 proxy=http://name:pass@proxy:port/ https-proxy=http://name:pass@proxy:port/ registry=http://registry.npmjs.org/ 


PPS Windows上で実行する場合は、サーバーでpowershellを使用することをお勧めします。cmdnpmでは1日後にフリーズする場合があります。

これがどのように機能するかについてのコメントとフィードバックを歓迎します。

Source: https://habr.com/ru/post/J427069/


All Articles