38

私はnode.jsを使用して(内部使用のための)多くのコードを書いており、インストールされるさまざまなマシンへの各ディストリビューションのパッケージリポジトリにモジュール(npm用にパッケージ化)を保存したいと考えています。

理想的には、Debian の apt リポジトリに似たソリューションが欲しいです。このソリューションでは、プライベート リポジトリ サーバーを実行し、リポジトリのリストを使用してインストールするように npm を構成できます (「foo」をインストールするとき、「foo」が私のプライベートによって知られている場合)サーバーはそこからインストールし、それ以外の場合は公開サーバーからインストールします)。

ただし、npmregistry構成キーは 1 つの URL しか受け入れないようです。

私が望むものを達成する方法はありますか?

私が見つけた最も近いものは次のとおりです。

  • 公開レポジトリをローカルにミラーリングし、その上にパッケージを追加していますが、その量のデータ (2.5G で、まだダウンロード中) を AWS にレプリケートしたくありません。
  • すべてのパッケージを git リポジトリでホストし、そこからインストールします (これは面倒です)。
  • HTTP で静的パッケージをホストする (私が知る限り、これにより「最新バージョン」を自動的に取得できなくなります。シンボリック リンクを使用して何かを実行できると思いますが、それでも git よりも柔軟性が低く、完全な URL が必要です (必要な場合)最新の状態に保つ必要があります)、検索可能なリポジトリは提供しません。
4

7 に答える 7

36

私は自分の仕事のためにこれを設定しました。これが私がしたことです:

  1. 空の NPM レジストリをセットアップします: npmjs.org のこのフォークからの指示に従いました。これにより、大幅に改善されたドキュメントが追加されます。

  2. Kappa のセットアップ: Paypal の優れた npm プロキシであるKappaを使用しました。(プライベート リポジトリを必要とするほとんどのユーザーと非常によく似たユース ケースがあると思います。これはまさに私が望んでいたことです)。

  3. npm_lazy のセットアップ(オプション): npmjs.org がダウンした場合に備えて、頻繁に使用されるパッケージの適切なキャッシュが必要だったので、キャッシング レイヤーとしてnpm_lazyを全体の前に追加しました。

起動して実行するのに2日(っぽい)かかりました。補足として、人々が誤って公開レジストリにプッシュすることを心配している場合は、これを に追加することをお勧めしますpackage.json

"publishConfig": { "registry": "http://my-registry.example.com" },

これは本当にちょっとしたパラノイアです。Kappa/npm_lazy インスタンスを指すように npm をセットアップすると、Kappa がプライベート リポジトリへの公開を処理します。

注: Kappa は、構成内の最初のリポジトリにのみ公開します。非公開レジストリと公開レジストリの両方に公開する必要がある場合は、独自のソリューションを考え出す必要があります。

于 2014-03-04T22:23:59.353 に答える
7

package.json では、有効な npm パック モジュールを指す任意の URL を使用できます。推測しにくいバケット名の s3 を使用しています。

npm pack
s3cmd put *.tgz s3://path-to-your bucket

S3 は単なる例です。Web サーバーにファイルを配置できる任意の手段を使用でき、基本認証を介して保護することもできます。

于 2013-01-30T20:48:29.693 に答える
3

npm-registry-client GitHub の問題 #42 には、独自のリポジトリ ミラーを作成する方法がいくつか記載されています。すなわち:

全体として、 https://github.com/npmが所有するリポジトリの問題を検索するか、そこで質問することで、最良の回答を得ることができるようです。

于 2014-07-10T18:54:42.390 に答える
3

Paypal のKappaプロジェクトがあなたのニーズに合っていると思います。

Paypal の Kraken プロジェクトと Kappa がどのように適合するかを説明する記事を次に示します。

クエンティンの質問の時点では利用できなかったことは理解していますが、おそらくこれは、ここに来る他の人にとって役立つでしょう.

于 2014-04-03T16:19:45.843 に答える
1

NodeUpの最近のエピソード (#37?) を聞いただけに基づいて、irisnpmを見たいと思うかもしれません。私が覚えていることから、これは公開モジュールと独自の非公開モジュールのマージされたセットを提供するサービスです。

于 2013-01-30T17:55:39.250 に答える
0

Dominic Barnesが示唆したように、複製できるのは_designドキュメント(CouchDBテーブルスキーム)のみです。

設計ドキュメントのみを複製する方法は?

ただし、データが必要かどうかを確認する必要があります。

于 2013-02-26T09:10:12.573 に答える