web-dev-qa-db-ja.com

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

Npmは、組織内で使用するのに最適なプラットフォームのように思えますが、Nexus/Mavenの場合のように、プライベートレポが可能な場合には興味があります。何もGoogleに登場しません:(

199
adam

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

A npmのドキュメントを見てください 可能であることを教えてくれます。

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

はい!

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

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

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

編集(2017-02-26):

新しくはありませんが、NPMでプライベートパッケージをホストするための 有料プラン があります。

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

他のオプションには JFrog ArtifactoryInedo ProGet がありますが、私はそれらを使いませんでした。

95
pvorb

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

{
    "name": "my-app",
    "dependencies": {
        "private-repo": "git+ssh://[email protected]:my-app.git#v0.0.1",
    }
}

次の投稿はこれについて話しています: Debuggable:Private npm modules

186
ebdr

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

一言で言えば、Sinopiaはあなたがゼロ設定で設定できるプライベート/キャッシュnpmリポジトリサーバーです。

Sinopiaは以下の目的で使用できます。

  • 公開しないで独自のプライベートパッケージを公開する
  • 使用されているパブリックパッケージのみをキャッシュします(パブリックレジスタ全体を複製する必要はありません)。
  • 内部で作成された修正版でパブリックパッケージを上書きします。
89
TiQP

2015年4月14日、 npm private modules が導入されました。

プライベートモジュールの代金を支払うと、次のことが可能になります。

  • 必要なだけプライベートパッケージをホストする
  • 他の有料ユーザーに、それらのパッケージの読み取りアクセス権または読み書きアクセス権を付与します。
  • 他の有料ユーザーがあなたに読み取りアクセス権を与えたパッケージをインストールして使用する
  • 他の有料ユーザーがあなたに書き込みアクセス権を与えているパッケージに協力する

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

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

現在、プライベートパッケージは個々のユーザーにのみ利用可能ですが、組織アカウントのサポートは間もなく開始されます。当面の間あなたの組織のためのユーザを作成してください、そしてサポートがここにあるとき私たちはそれを組織にアップグレードすることができます。

それで完璧ではないけれども、それは個人的なパッケージを維持するための公式npm解決策であり、そしてそれ自体言及する価値があります。

UPDATE

Npm Private Packages が利用可能になりました。個々のユーザーと組織の両方の計画があります

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

(免責事項:npm、Inc。とはいかなる形であれリモートでも提携していません。)

28
bardzusny

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

27
kub1x

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

18
Abel Pastur

このスレッドはアップデートが必要だと思います。あなたが利用可能なnpmレジストリのどれかを見れば、それらは非常に重いので、それらはcouchdbを必要とします。 Gemfurryなどは、公共のリポジトリからフォークする必要があります。 shadow-npmのようなnpmのいくつかは 最近のコミットはありません を持っています。

それから Reggie を見つけました。それはインストールや使用が非常に簡単で、非常に良いコミットアクティビティを持っています コミュニティサポート 。その非常に軽量で、あなたはcouchdbなどに対処する必要はありません。

9
Pradeep Mahdevu

私があなたの質問をよく理解できないなら許してください、しかしここに私の答えがあります:

あなたは私用npmモジュールを作成し、それをインストールするためにnpmの通常のコマンドを使うことができます。ほとんどのnode.jsユーザーは自分のレポジトリとしてgitを使いますが、あなたが使えるレポジトリなら何でも使うことができます。

  1. あなたのプロジェクトでは、NPMパッケージの骨組みが欲しいでしょう。ほとんどのノードモジュールにはgitリポジトリがあり、NPMとの統合方法を見ることができます(package.jsonファイル。この一部であり、NPMのWebサイトにはnpmパッケージの作成方法が示されています)。
  2. Npmインストールダウンロードのためにそれを上演するためにインターネットまたはあなたのネットワークから利用できるようにあなたのパッケージを作りそしてtarballするためにMakeに似た何かを使ってください。
  3. あなたのパッケージができたら、それから

    npm install * tarball_url *

8
EhevuTov

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

無料です。Githubアカウントでログインできます。独自のデータベースをセットアップするのに比べて、時間を大幅に節約できます。

7
alex urdea

パーティーには少し遅れましたが、NodeJS(〜11月14日現在)は企業のNPMリポジトリをサポートしています - 詳しくは 公式サイト をご覧ください。

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

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

プライベートモジュールの内部共有を容易にし、開発と展開のワークフローをより適切に制御します。オープンソースモジュールを法的要件に準拠してホストコードをオンプレミスに展開する際のセキュリティを強化します。

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

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

5
Dan Pantry

この記事 プライベートレジストリの設定方法について

  • 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 
3
nickleefly

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

enter image description here

3
Xin Meng

私はパーティーに少し遅れるかもしれませんが、これら二つのうちのどれでもあなたのために働くかもしれません:

  1. http://www.jfrog.com/confluence/display/RTF/Npm+リポジトリ
  2. https://github.com/krakenjs/kappa
2
Prabhat

分散型のアプローチを好む場合は、Aragon Package Managerを使用することもできます。

  1. APMを使用して: http://blog.aragon.one/using-apm-to-replace-npm-and-other-centralized-package-managers/
  2. APMの導入: https://github.com/aragon/aragonOS#apm
0
countTheRow