Node.jsを使用して多数のコード(内部使用向け)を記述しており、モジュール(npm用にパッケージ化された)を、パッケージがインストールされるさまざまなマシンへの各ディストリビューションのパッケージリポジトリに格納したいと考えています。
理想的には、Debianのaptリポジトリに似たソリューションを希望します。プライベートリポジトリサーバーを実行し、npmを設定して、そこからインストールするリポジトリのリストを使用できます( "foo"をインストールするとき、 "foo"がプライベートで知られている場合)サーバーはそこからインストールします。それ以外の場合はパブリックサーバーからインストールします)。
ただし、npm registry
構成キーは単一のURLのみを受け入れるようです。
私が望むものを達成する方法はありますか?
私が見つけることができた最も近いものは次のとおりです:
私は自分の仕事のためにこれを設定しました。これが私がしたことです:
空のNPMレジストリをセットアップします:npmjs.orgのこのフォークからの指示に従いました 改善されたドキュメント を追加します。
セットアップカッパ:Paypalの優れたnpmプロキシ カッパ を使用しました。 (私は彼らがプライベートリポジトリを望んでいるほとんどの人と非常に似たユースケースを持っていると思います;これはまさに私が望んでいたものでした)。
Setup npm_lazy(optional):npmjs.orgの場合に頻繁に使用されるパッケージのニースキャッシュが必要でしたダウンしたので、キャッシュレイヤーとして、全体の前に npm_lazy を追加しました。
すべてが稼働するまで2日かかりました。補足として、偶然に公開レジストリにプッシュする人々が心配な場合は、これをpackage.json
に追加することをお勧めします。
"publishConfig": { "registry": "http://my-registry.example.com" },
これはほんの少しのパラノイアです。 Kappa/npm_lazyインスタンスを指すようにnpmを設定すると、Kappaがプライベートリポジトリへの公開を処理します。
注:Kappaは、構成内の最初のリポジトリにすべてのパブリッシュのみを行います。プライベートレジストリとパブリックの両方に公開する必要がある場合は、独自のソリューションを作成する必要があります。
Package.jsonでは、有効なnpmパックモジュールを指す任意のURLを使用できます。推測が難しいバケット名のs3を使用しています。
npm pack
s3cmd put *.tgz s3://path-to-your bucket
S3は単なる例であり、Webサーバーにファイルを配置できる任意の手段を使用できます。基本認証を介して保護することもできます。
npm-registry-client GitHub issue#42に、独自のリポジトリミラーを作成する方法がいくつかリストされています。つまり:
全体として、 https://github.com/npm が所有するリポジトリの問題を検索するか、そこで質問することで、最良の回答を得ることができるようです
ドミニクバーンズが示唆したように、複製できるのは_design
ドキュメント(CouchDBテーブルスキーム)
ただし、データが必要かどうかを確認する必要があります。
必要なモジュールを複製してから、複製でモジュールを探すプロキシサーバーを作成できます。モジュールが存在しない場合は、リクエストをNPMにパイプして、そこから結果を返すことができます。