組織がnpmで使用するプライベートリポジトリをホストできますか?


219

Npmは、組織内で使用するのに最適なプラットフォームのように聞こえます。Nexus/ Mavenのように、プライベートリポジトリが可能かどうか知りたいです。Googleでは何も起こりません:(


1
以下は、かなりきちんとしたドキュメントです。その方法:clock.co.uk/tech-blogs/how-to-create-a-private-npmjs-repositoryこれは、彼の回答で説明されているpvorbと同じです。
ramesh.mimit 2013

2
clock.co.ukの投稿は、npmレジストリの完全な複製であることに注意してください。必要な依存関係のローカルキャッシュの場合、私が見つけた最良の解決策はnpm_lazyです。私のフォークのドキュメントは少しわかりやすいかもしれません。
Jake Berger

1
私は議論に少し遅れていることを知っていますが、私たちの最近の(無料)製品ProGetに
Karl Harnagy 2014

2
下記のとおり、Nexusはホスト型およびプロキシnpmリポジトリをサポートするようになりました。
ザックトンプソン

8
長年にわたって多くのオプションが利用可能になりました。これに戻って来る誰もがすべての答えではなく、私が2011年に認められた1つだけお読みください
アダム

回答:


100

これを行う簡単な方法はないと思います。

NPMのドキュメントを見ては、それが可能であること、を教えてくれる:

自分のプライベートレジストリを実行できますか?

はい!

最も簡単な方法は、couchデータベースを複製し、同じ(または同様の)設計ドキュメントを使用してAPIを実装することです。

公式のCouchDBから連続レプリケーションを設定し、内部のCouchDBをレジストリ構成として設定すると、プライベートパッケージに加えて、公開されたパッケージを読み取ることができ、デフォルトでは内部でのみ公開されます。次に、全世界に公開するためにパッケージを公開する場合は--registry、そのコマンドの構成をオーバーライドするだけです。

クロックブログには、プライベートnpmリポジトリを作成する方法に関する優れたチュートリアルもあります

編集(2017-02-26):

それほど新しいものではありませんが、NPMでプライベートパッケージをホストする有料プランがあります。

長年にわたり、NPMは、NPMに基づいて構築された巨大なフロントエンドエコシステムを通じて、Node.js以外の多くの企業にとっても要因となっています。社内でJavaプロジェクトをホストするためにSonatype Nexusをすでに実行している場合は、それを使用して内部NPMパッケージをホストすることもできます。

その他のオプションは、JFrog ArtifactoryInedo ProGetを、私はそれらを使用していません。


201

https://github.com/isaacs/npmjs.org/:npmバージョンv1.0.26では、package.jsonファイルの依存関係としてプライベートgitリポジトリのURLを指定できます。私はそれを使ったことがありませんが、フィードバックが大好きです。これはあなたがする必要があることです:

{
    "name": "my-app",
    "dependencies": {
        "private-repo": "git+ssh://git@yourgitserver.com:my-app.git#v0.0.1",
    }
}

次の投稿はこれについて話します:デバッグ可能:プライベートnpmモジュール


3
これは素晴らしい機能ですが、内部のMavenリポジトリであるNPMリポジトリ全体をホストすることについて質問していたため、pvorbを受け入れました
adam

2
注:NPMは現在、これらのgit URLでバージョン範囲を指定することをサポートしていません(例:1.2.xまたは^ 1.2.3)。github.com/npm/npm/issues/3328
クレイ

@Clay、タグ(v0.0.1)を指定できますよね?
mcha

はい、正確なタグを付けることができます。
クレイ、

GitHubデプロイキーを使用してプライベートリポジトリへの認証を行う方法はありますか?
sunknudsen

91

これを行うには、使いやすいnpmパッケージがあります。 https://www.npmjs.org/package/sinopia

簡単に言えば、Sinopiaは、構成なしでセットアップできるプライベート/キャッシングnpmリポジトリサーバーです。

シノピアは次の目的で使用できます。

  • 公開せずに独自のプライベートパッケージを公開する
  • 使用されるパブリックパッケージのみをキャッシュします(パブリックレジスタ全体を複製する必要はありません)。
  • 内部で作成された修正バージョンでパブリックパッケージをオーバーライドします。

13
シノピアはもはや維持されていないようです。最後のコミットは今日(2016年3月7日)で8か月以上前でした。見栄えがよく、うまく機能しますが、保守性に注意してください。
Ray Booysen 2016年

45
verdaccioをチェックしてください。それは積極的に維持されているフォークです:github.com/verdaccio/verdaccio
Rotareti

1
verdaccioは、「プライベートのみ」の構成をサポートしていますか?それは、パブリックレジストリをクエリしませんか?
MarkusSchaber 2017年

1
@MarkusSchaber別のレジストリへのプロキシを無効にすることができます。プロキシがネットワークにアクセスしようとしても、オフラインモードで動作します。
ファンピカド2017

1
私は本当に事Verdaccioは、それ自身の解答今日値するstackoverflow.com/a/50815174/336753を私も最初、ここでコメントに気づきませんでした。
kub1x

40

Verdaccioは私が探していたものであり、それ自体の答えに値します;)これは、活発に維持されているSinopiaのフォークです(ここで非常に賛成の回答です)。それはnpmパッケージとしてのnpmレジストリであり、見つけることができます

ここ:https : //github.com/verdaccio/verdaccio
ここ:https : //www.verdaccio.org
ここ:pnpm i -g verdaccio、または
ここ:docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio/verdaccio


2
この!ありがとう-> docker run -it --rm --detach --name verdaccio -p 4873:4873 verdaccio / verdaccio
mwm

1
@mwmありがとうございます。Dockerバージョンをリストに追加しました。
kub1x

28

4月14日(2015年)、npmプライベートモジュールが導入されました。

プライベートモジュールの料金を支払うと、次のことができます。

  • 必要なだけプライベートパッケージをホストする
  • これらのパッケージの読み取りアクセスまたは読み取り/書き込みアクセスを他の有料ユーザーに与える
  • 他の有料ユーザーがあなたに読み取りアクセス権を与えたパッケージをインストールして使用します
  • 他の有料ユーザーがあなたに書き込みアクセス権を与えたパッケージで共同作業する

もちろん無料ではありません。現在、ユーザーあたり月額7ドルです。

そして、それはまだかなり新しいサービスです。たとえば、組織アカウントのサポートがありません(2015年6月現在):

現在、プライベートパッケージは個人ユーザーのみが利用できますが、組織アカウントのサポートもまもなく開始されます。当面の間、お気軽に組織のユーザーを作成してください。サポートが利用可能になったら、組織にユーザーをアップグレードできます。

だから完璧ではありませんが、それは公式ですプライベートパッケージを維持するための npmソリューションであり、それ自体が言及する価値があります。

更新

Npmプライベートパッケージが利用可能になり、個々のユーザーと組織の両方を対象としたプランが提供されます。

  • 無制限の数のパブリックおよびプライベートパッケージ
  • $ 7 /月/開発者
  • 組織名に基づいて1つのスコープ名を含みます
  • @ org-name / fooへのアクセスを公開および制御する

(免責事項:リモートでnpm、Inc.と提携していません)


20

プライベートnpmレジストリをサポートするリポジトリマネージャー:


4
有料バージョンのみがnpmリポジトリをサポートしています。無料版にはありません。
ブーン

12
Sonatype Nexus 3.0の無料バージョンは、実際には(bowerとdockerリポジトリと共に)npmリポジトリをサポートしています。
n8n8baby 2016年

10

このスレッドは更新が必要だと思います。利用可能なnpmレジストリのいずれかを見ると、それらは非常に重く、couchdbが必要です。Gemfurryなどは、公開レポジトリからフォークする必要があります。shadow-npmのようなnpmの一部には、最近のコミットがありません

次に、Reggieを見つけました。そのコミット活動はよく、インストールと使用は非常に簡単で、コミュニティのサポートも非常に優れています。非常に軽量で、couchdbなどに対応する必要はありません。


9

あなたの質問がよくわからない場合はご容赦ください。しかし、これが私の答えです。

プライベートnpmモジュールを作成し、npmの通常のコマンドを使用してインストールできます。ほとんどのnode.jsユーザーはリポジトリとしてgitを使用しますが、機能するリポジトリであれば何でも使用できます。

  1. プロジェクトでは、NPMパッケージのスケルトンが必要になります。ほとんどのノードモジュールには、NPMとの統合方法を確認できるgitリポジトリがあります(package.jsonファイル、これはその一部であり、NPMのWebサイトにnpmパッケージの作成方法が示されています)
  2. Makeに似たものを使用してパッケージを作成し、インターネットまたはネットワークから利用できるようにtarballして、npmインストールダウンロード用にステージングします。
  3. パッケージが作成されたら、次を使用します

    npm install * tarball_url *


5
彼の質問はありませんでしたが、答えは私にとって非常に役に立ちます!:)
エドゥアルドコスタ

7

これは私が知っている最も簡単な方法です-Gemfuryプライベートnpmレジストリを使用してクラウドでホストします。

これは無料で、Githubアカウントでログインできます。独自のデータベースを設定する場合と比較して、時間を大幅に節約できるはずです。


それは自由ではありません。
I.Tyger

6

Sonatype Nexusを使用しています。バージョンはNexus Repository ManagerOSS 3.6.1-02です。そして、それはNPMプライベートリポジトリをサポートし、パッケージをキャッシュしたと確信しています。

ここに画像の説明を入力してください


5

パーティーには少し遅れますが、NodeJS(おそらく11月14日現在)は企業NPMリポジトリをサポートしています。詳細は公式サイトで確認できます。

一見すると、npmEはNPMリポジトリのフォールスルーミラーリングを許可しているように見えます。つまり、内部のリポジトリでパッケージが見つからない場合、実際の NPMリポジトリでパッケージを検索します。とても便利なようです!

npm Enterpriseは、npmとパブリックnpmレジストリを維持するチームから、組織内のJavaScriptモジュールを安全に共有および配布するためのオンプレミスソリューションです。以下を必要とするチーム向けに設計されています。

プライベートモジュールの簡単な内部共有により、開発と展開のワークフローをより適切に制御し、オープンソースモジュールの展開に関する厳格なセキュリティをオンプレミスのコードをホストする法的要件に準拠したnpmEはプライベートnpm

npmEは、すでに使用しているのと同じ標準のnpmクライアントで動作するnpmレジストリですが、現在熱心にノードを採用している大規模な組織に必要な機能を提供しています。これは、npmオープンソースプロジェクトのスポンサーであり、パブリックnpmレジストリのホストであるnpm、Inc.によって構築されています。

残念ながら、無料ではありません。試用できますが、市販のソフトウェアです。これはソロ開発者にとってはそれほど素晴らしいことではありませんが、あなたがソロ開発者であれば、GitHubがあります:-)


3

この投稿では、プライベートレジストリのセットアップ方法について説明しています

  • couchdbがシステムにインストールされていることを確認してください
  • npmjs.orgを複製するには、次のコマンドを使用します

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true}' -H "Content-Type: application/json"

"continuous":trueコマンドにはがあることに注意してください。これはCouchDBの_changes APIを利用しており、このAPIが通知されたときに新しい変更をプルします。

これらのレプリケーションを停止したい場合は、簡単に追加でき"cancel":trueます。その後、スクリプトは

    curl -X POST http://127.0.0.1:5984/_replicate -d '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry", "continuous":true, "create_target":true, "cancel":true}' -H "Content-Type: application/json"

次に、npmjs.orgのreadmeにアクセスして、npmをインストールします(確認nodejsgitてインストールされていること)。打撃はすべてのステップです

git clone git://github.com/isaacs/npmjs.org.git
cd npmjs.org
sudo npm install -g couchapp 
npm install couchapp 
npm install semver 
couchapp push registry/app.js http://localhost:5984/registry 
couchapp push www/app.js http://localhost:5984/registry 

1
URL isaacs.iriscouch.com/registryは残念ながら現在は無効になっています。最初は機能しているように見えるように、skimdb.npmjs.com / registryに変更してみましたが、レジストリインデックスのみが複製され、tarballは複製されていません...
fuzzyTew

couchappの readmeには、couchappはもう非推奨となったと記載されていますが、レジストリ全体をミラーリングする現在の方法はnpm-fullfat-registry
fuzzyTew

私はこれに静的レジストリを使用することになりました。これは、couchdbソリューションとは異なり、構成をまったく必要としません。
fuzzyTew 2018


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.