web-dev-qa-db-ja.com

Sinopiaにプライベートプロジェクトを公開する方法(プライベートレジストリのnpm adduserが失敗します)

わかりましたので、ようやくSinopiaを使用してプライベートnpmレジストリを取得できました。 ただし、何も公開できません。

TL; DR:Sinopiaはnpm adduserをサポートしていませんが、独自のユーザー管理があります。また、npmはnpm publishからnpm adduserまでに作成された有効なユーザーを必要とします。これは、内部Sinopiaサーバーがサポートされていないコマンドでエラーをスローするために失敗します。..

適切なユーザーとパスワードを持つプライベートレジストリとしてSinopiaを使用する方法

  1. npmjs.orgでグローバルユーザーを作成してから、Sinopiaで同じパスワードを持つ別のユーザーを作成しますか?
  2. または、固定ユーザー/パスを使用するようにnpmに指示する簡単な方法があります。
  3. または、さらに良い方法でユーザー名とパスワードの入力を求められますか?
  4. 他に何か?

あらすじ:

SinopiaはCouch.DBに依存せず、マスターからまだ持っていないパッケージを取得します(デフォルトはグローバルnpmjs.orgです)。

Sinopiaは完全に起動し、すべてのインターフェイスでリッスンするように構成されています。パッケージを提供するのに驚異的に機能します

npm install

〜/ .npmrcを構成して、常に内部レジストリを指すようにしました。

すべてのプロジェクトのpackage.jsonファイルは

  ....
  "publishConfig" : {
     "registry" : "http://internal-npm:4873"
  },
  ....

また、js-yamlを使用してconfig.yamlを操作することにより、シノピアにカスタムユーザーを追加することができました。

crypto.createHash('sha1').update('theBigPassword').digest('hex')

今私はで立ち往生しています

npm --registry=http://internal-npm:4873 --ca=null publish

久しぶりに:

npm ERR! need auth auth and email required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`

npm ERR! System Linux 3.11.0-18-generic
npm ERR! command "/usr/bin/nodejs" "/usr/bin/npm" "--registry=http://internal-npm:4873" "--ca=null" "publish"
npm ERR! cwd /home/ciprian/workspace/netop-npm
npm ERR! node -v v0.10.15
npm ERR! npm -v 1.2.18
npm ERR! code ENEEDAUTH
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/ciprian/workspace/netop-npm/npm-debug.log
npm ERR! not ok code 0

ログファイルのビジネスエンドから、ユーザーはオプションではないことがわかります

86 error need auth auth and email required for publishing
86 error need auth You need to authorize this machine using `npm adduser`
87 error System Linux 3.11.0-18-generic
88 error command "/usr/bin/nodejs" "/usr/bin/npm" "--registry=http://internal-npm:4873" "--ca=null" "publish"
89 error cwd /home/ciprian/workspace/netop-npm
90 error node -v v0.10.15
91 error npm -v 1.2.18
92 error code ENEEDAUTH
93 verbose exit [ 1, true ]

現在、鶏と卵の問題は、Sinopiaがnpm adduserをサポートしていないが、上記のように独自のユーザー管理を持っていることです。また、npmにはnpm adduserを介して作成された有効なユーザーが必要です。これは、内部Sinopiaサーバーがサポートされていないコマンドでエラーをスローするため失敗します。

20
cdanea

まず第一に、それは「鶏と卵」の問題ではありません。

「npm adduser」は次の2つのことを行います。

  1. リモートサーバーに新しいユーザーを作成するか、存在することを確認します
  2. _authを.npmrcに追加します

Sinopiaは、ユーザーが存在しない場合は文句を言いますが、存在する場合は成功を報告します。


だから、あなたがしなければならないことはこれです:

  1. user/passをconfig.yamlに追加し(joshの答えを参照)、sinopiaサーバーを再起動します
  2. 実行npm adduser --registry http://internal-npm:4873/

はい、「adduser」コマンドは、実際には新しいユーザーを追加しないため、混乱を招きます。ユーザーが構成に存在することを確認するだけです。

必要に応じて、「npm login」コマンドを使用できます。まったく同じことをしても、混乱は少なくなります。 :)


次に、これをpackage.jsonに追加します。

"publishConfig": {
  "registry": "http://internal-npm:4873/"
}

このように、npmは、デフォルトのレジストリであっても、それをパブリックレジストリに公開しません。


最後に、同じnpmrcで2つのレジストリ(npmjsとプライベートのレジストリ)を同時に使用することはできません。それは 安全性が低い でも思っているよりです。

ほとんどの場合は問題ありませんが、両方を使用するhaveがある場合(たとえば、パブリックパッケージとプライベートパッケージを同時に維持する場合)、 yapm npmの代わりに、.npmrcに次のように書き込みます。

[registries."https://registry.npmjs.org/"]
_auth = (your auth string for public registry)

[registries."http://internal-npm:4873/"]
_auth = (your auth string for private registry)
always-auth = true

すべての場合にパスワードを公開レジストリに公開することを防ぎます。

25
alex

Sinopia READMEで正確に何をすべきかがわかります

新しいユーザーを追加する

新しいユーザーを追加するユーティリティはありませんが、少なくともコマンドラインでnodeを使用してパスワードを生成できます。構成を編集し、ユーザーを手動で追加する必要があります。

ノードを起動し、「newpass」をハッシュを取得するパスワードに置き換えて次のコードを入力します。

$ node
> crypto.createHash('sha1').update('newpass').digest('hex')
'6c55803d6f1d7a177a0db3eb4b343b0d50f9c111'
> [CTRL-D]

新しいユーザーをconfig.yamlファイルに挿入します。

次に、npm adduserを実行してログインします。 (adduserはアカウントの作成とログインの両方に使用されるコマンドです。sinopiaは作成部分をサポートしていません。)

7
josh3736

オプション1は機能しますが、私はそれで満足していません。だから私は検索を続けます

はい、有効なnpmjs.orgユーザーを追加したら、レポで切り替えます:

npm config set registry http://internal-npm:4873/

同じユーザー/パスがSinopiaに存在する場合、発行コマンドは機能します

npm publish --registry=http://internal-npm:4873/

欠点は、誰かがプライベートレジストリを明示的に設定するのを忘れると、パブリッシュがグローバルnpmjs.orgで100%動作することであり、これは災害になります。

4
cdanea

私はシノピアの貢献者を助けます:)ここを参照してください: https://github.com/rlidwka/sinopia/issues/230#issuecomment-9182566

0
darky

バージョン0.13の時点で、Sinopiaは次の方法で新しいユーザーの作成をサポートしています。

npm adduser --registry example.com:port

詳細については、以下を参照してください。 新しいSINOPIAユーザーの作成方法

0
mvermand