Azure DevOps Services |Azure DevOps Server 2022 |Azure DevOps Server 2020
Azure Artifacts を使用すると、開発者は、npmjs.com フィードやプライベート フィードなどのパブリック レジストリの両方を含む、さまざまなソースからパッケージを管理できます。 Azure Artifacts で認証するには、npm 構成ファイルを構成する必要があります。 このファイルには、npm で使用されるフィード URL と資格情報が含まれており、プロキシの設定、既定のパッケージの場所の定義、プライベート パッケージ フィードの構成など、npm クライアントの動作をカスタマイズするためのオプションが提供されます。 npmrc ファイルは通常、ユーザーのホーム ディレクトリにありますが、既定の設定をオーバーライドするためにプロジェクト レベルで作成することもできます。
前提 条件
フィードに接続する
Azure Artifacts では、2 つの個別の構成ファイルを使用することをお勧めします。 1 つ目は Azure Artifacts での認証専用で、2 つ目は資格情報を格納するためにローカルに保持する必要があります。 この方法では、資格情報をセキュリティで保護しながら、構成ファイルを共有できます。
2 番目のファイルを設定するには、開発用コンピューターのホーム ディレクトリに配置し、すべてのレジストリ資格情報を含めます。 これにより、npm クライアントは認証のために資格情報に簡単にアクセスできます。
次の手順では、最初の構成ファイルを設定する手順について説明します。 開発環境に対応するタブを選択します。
手記
vsts-npm-auth
は、Azure DevOps Server ではサポートされていません。
Azure DevOps 組織にサインインし、プロジェクトに移動します。
[Artifacts] を選択し、[フィードに接続する] を選択します。
左側 サイドバーから npm を選択します。 npm で Azure Artifacts を初めて使用する場合は、前提条件がインストールされていることを確認してください。
Project のセットアップ セクションの手順に従ってフィードに接続します。
.npmrc ファイルをプロジェクトのディレクトリ (package.json ファイルと同じディレクトリ) に追加し、次のスニペットを貼り付けます。
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
資格情報のセットアップ
次のスニペットをコピーして、ユーザーレベルの npmrc ファイルに貼り付けます。
組織スコープのフィード:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
プロジェクト スコープのフィード:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
パッケージの読み取りおよび書き込みスコープで、個人アクセス トークンを生成します。
コマンド プロンプト ウィンドウで次のコマンドを実行し、メッセージが表示されたら個人用アクセス トークンを貼り付けます。 完了したら、生成された Base 64 でエンコードされた値をコピーします。
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
Linux/Mac を使用している場合は、次のコマンドを使用して、個人用アクセス トークンを Base 64 に変換することもできます。 結果の Base64 でエンコードされた値をコピーします。
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64
ユーザー .npmrc ファイルの [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] プレースホルダーを、前の手順で取得したエンコードされた個人用アクセス トークンに置き換えます。
Azure DevOps コレクションにサインインし、プロジェクトに移動します。
[Artifacts] を選択し、[フィードに接続する] を選択します。
左側 サイドバーから npm を選択し、「プロジェクトのセットアップ」セクションの指示に従って構成ファイルを設定します。
.npmrc ファイルをプロジェクトのディレクトリ (package.json ファイルと同じディレクトリ) に追加し、次のスニペットを貼り付けます。
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
資格情報のセットアップ
次のスニペットをコピーし、.npmrc ファイル ユーザー レベルに貼り付けます。
コレクション スコープのフィード
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
プロジェクト スコープのフィード:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
パッケージの読み取りおよび書き込みスコープで、個人アクセス トークンを生成します。
コマンド プロンプト ウィンドウで次のコマンドを実行し、メッセージが表示されたら個人用アクセス トークンを貼り付けます。 完了したら、生成された Base 64 でエンコードされた値をコピーします。
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
ユーザー .npmrc ファイルの [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] プレースホルダーを、前の手順で取得したエンコードされた個人用アクセス トークンに置き換えます。
Azure DevOps コレクションにサインインし、プロジェクトに移動します。
[Artifacts] を選択し、[フィードに接続する] を選択します。
左側 npm を選択し、Project セットアップ の指示に従って構成ファイルを設定します。
.npmrc ファイルをプロジェクトのディレクトリの package.json ファイルと同じディレクトリに追加し、次のスニペットを貼り付けます。
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
手記
Debian、Ubuntu、その他のコミュニティディストリビューションや Fedora や Redhat などのエントレプライズディストリビューションの場合は、 NodeSource ディストリビューション リポジトリから前提条件がインストールされていることを確認してください。
資格情報のセットアップ
次のスニペットをコピーし、.npmrc ファイル ユーザー レベルに貼り付けます。
コレクション スコープのフィード
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
プロジェクト スコープのフィード:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
パッケージの読み取りおよび書き込みスコープで、個人アクセス トークンを生成します。
コマンド プロンプト ウィンドウで次のコマンドを実行し、メッセージが表示されたら個人用アクセス トークンを貼り付けます。 完了したら、生成された Base 64 でエンコードされた値をコピーします。
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
ユーザー .npmrc ファイルの [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] プレースホルダーを、前の手順で取得したエンコードされた個人用アクセス トークンに置き換えます。
アドバイス
.npmrc ファイルで複数のレジストリを使用することは、スコープ およびアップストリーム ソースでサポートされています。
トラブルシューティング
vsts-npm-auth が認識されない
このエラーは、npm modules フォルダーがパスに追加されていないことを示します。 Node.js セットアップを再実行し、必ず Add to PATH
オプションを選択します。 または、コマンド プロンプトで %APPDATA%\npm
するように PATH 変数を変更するか、PowerShell で $env:APPDATA\npm
することで、npm モジュール フォルダーをパスに追加することもできます。
認証できない
vsts-npm-auth をリセットする
vsts-npm-auth 資格情報をリセットするには、次の手順に従います。
vsts-npm-auth をアンインストールします。
npm uninstall -g vsts-npm-auth
npm キャッシュをクリアします。
npm cache clean --force
.npmrc ファイルを削除します。
vsts-npm-auth を再インストールします。
npm install -g vsts-npm-auth --registry https://registry.npmjs.com --always-auth false
発行できない
403 エラーが発生した場合は、名前の競合を示している可能性があります。 Azure Artifacts では、パッケージは不変です。つまり、パッケージをフィードに発行すると、そのバージョン番号は永続的に予約されます。 削除しても、同じバージョン番号の新しいパッケージを発行することはできません。 この問題に対処するには、package.json ファイル内のパッケージ バージョンを更新してから、もう一度やり直してください。
関連コンテンツ