web-dev-qa-db-ja.com

特定のスコープ(@組織)へのトークンレジストリを使用してNPMをグローバルに構成する

特定の スコープ を特定の トークン で使用できるように、NPMレジストリーをグローバルにセットアップしたい。

私は使用できることを知っています:

$ npm login --scope=@organisation

そして、~/.npmrc with:

//registry.npmjs.org/:_authToken=XXXX

しかし、私が欲しいのは2つの方法の組み合わせです。レジストリURLをスコープに割り当てるときにトークンを使用します。

私は試した :

npm config set @organisation:registry https://registry.npmjs.org/:_authToken=XXXX

ただし、NPMコマンド(例:npm install @organisation/my-package)。次のエラーが発生します。

npm ERR! Darwin 15.6.0
npm ERR! argv "/Users/me/.nvm/versions/node/v6.2.2/bin/node" "/Users/me/.nvm/versions/node/v6.2.2/bin/npm" "install" "@organisation/my-package"
npm ERR! node v6.2.2
npm ERR! npm  v3.10.3
npm ERR! code E403
npm ERR! you do not have permission to publish ":_authToken=XXXX". Are you logged in as the correct user? : :_authToken=XXXX

解決策はありますか? (私はトークンを使用する必要があり、環境変数は必要ありません)。

PS: https://github.com/npm/npm/issues/7995#issuecomment-175915766 しかし、機能していません...

14
Yves M.

公式ドキュメントによると、 ログイン時にスコープをレジストリに関連付ける ができるはずです。これは、あなたの望むことですか?

以下を試しましたか?

npm login --registry=https://reg.example.com --scope=@myco

ログインしたくないが、トークンを明示的に指定したい場合、以下が機能するはずです:

npm config set @myco:registry https://reg.example.com
npm config set '//reg.example.com/:_authToken' 'xxxxxxxx'

これを機能させるには、レジストリのURLを正規化する必要があります。つまり、スキームを含めず、スラッシュで終了する必要があります。

24
deadbeef