CIでも機能するローカル開発用のプライベートnpmレジストリ認証を設定するための一般的なベストプラクティスがあるかどうか疑問に思います(またはその逆)。
これが私の現在の理解です:
ローカル開発の場合: 次のように実行npm login
して、アクセス トークンを作成し、~/.npmrc
ファイルを作成して、そのファイルにアクセス トークンを書き込みます。
@my-scope:registry=https://registry.npmjs.org/
//registry.npmjs.org/:_authToken=my-auth-token
私のプロジェクトには、.npmrc
次のファイルがあります(の隣package.json
):
@my-scope:registry=https://registry.npmjs.org/
//registry.npmjs.org/:always-auth=true
これはうまくいくようです。npm がレジストリのユーザー レベルの認証設定を取得しているように見えるため、プライベート パッケージをインストールできます。
CI の場合: NPM のドキュメント.npmrc
では、CI に認証を挿入するために、プロジェクト レベルに以下を追加することが提案されています。
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
残念ながら、これは私のマシンのユーザーレベルの設定を上書きします。.npmrc
ファイルの優先順位は、プロジェクト レベル、ユーザー レベル、グローバル、npm ビルトインです (高いものから低いものへ)。npm CLI は、NPM_TOKEN 環境変数を使用して認証を試みるようになりました。これは、ローカル マシンで明示的にエクスポートしない限り、明らかに機能しません。
多分私は明らかな何かを見逃しています。そうでない場合、これに対処するための一般的なベストプラクティスがあるかどうか知りたいですか? アクセス トークンがユーザー レベルで既に構成されている場合に、各従業員に自分のマシンでアクセス トークンをエクスポートするように依頼することは.npmrc
、優れた解決策とは思えません。
あるいは、ユーザー レベルの構成 (または npm ログイン) に煩わされることなく、各従業員のローカル マシンでアクセス トークンを NPM_TOKEN として直接エクスポートすることもできます。しかし、前述のように、私はそれが素晴らしい解決策だとは思いません。各従業員が会社のプライベート レジストリを設定できる標準ソリューション (ユーザー レベルの構成ファイルなど) を想像します。