Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020
Azure Artifacts を使用すると、開発者は、 npmjs.com やプライベート フィードなどのパブリック レジストリなど、さまざまなソースからパッケージを管理できます。 Azure Artifacts で認証するには、 npmrc 構成ファイルを構成する必要があります。 このファイルには npm で使用されるフィード URL と資格情報が格納され、プロキシの設定、既定のパッケージの場所の定義、プライベート フィードへのアクセスの構成などのクライアント動作をカスタマイズできます。
通常、npmrc ファイルはユーザーのホーム ディレクトリにありますが、プロジェクト レベルで作成して既定の設定をオーバーライドすることもできます。
前提 条件
フィードに接続する
Azure Artifacts では、2 つの個別の .npmrc 構成ファイルを使用することをお勧めします。 資格情報を格納するにはローカルに格納する必要があります。もう 1 つは、フィード URL を定義する package.json と共にプロジェクト ディレクトリに追加する必要があります。 この方法では、機密情報を公開することなく、プロジェクト レベルの構成を共有できます。
資格情報ファイルを設定するには、 .npmrc ファイルを作成または更新し、必要なすべてのレジストリ資格情報を含めます。 これにより、npm クライアントは認証のために資格情報に簡単にアクセスできます。
次の手順では、プロジェクト レベルの構成ファイルを設定する手順について説明します。 開発環境に対応するタブを選択します。
手記
vsts-npm-auth は、Azure DevOps Server ではサポートされていません。
Azure DevOps 組織にサインインし、プロジェクトに移動します。
アーティファクトを選択し、次にドロップダウンメニューからフィードを選択します。
[ フィードに接続] を選択し、左側のナビゲーション ウィンドウから npm を選択します。
package.json と同じディレクトリにある .npmrc をプロジェクトに追加し、[Project setup]\(プロジェクトセットアップ\) セクションから指定されたスニペットをファイルに貼り付けます。
次のコマンドを実行して、ユーザー レベルの .npmrc ファイルに追加された Azure Artifacts トークンを取得します。 毎回これを実行する必要はありません。npm は、トークンを更新するときに 401 未承認 エラーを返します。
vsts-npm-auth -config .npmrc
Azure DevOps 組織にサインインし、プロジェクトに移動します。
アーティファクトを選択し、次にドロップダウンメニューからフィードを選択します。
[ フィードに接続] を選択し、左側のナビゲーション ウィンドウから npm を選択します。
.npmrc ファイルをプロジェクトのディレクトリに追加します。 これは、 package.json ファイルがあるディレクトリと同じである必要があります。
Project セットアップ セクションで提供されているスニペットを .npmrc ファイルに貼り付けます。 ファイルは次のようになります。
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
パッケージの読み取りおよび書き込みスコープで、個人アクセス トークンを生成します。
コマンド プロンプト ウィンドウで次のコマンドを実行します。 メッセージが表示されたら、個人用アクセス トークン (PAT) を貼り付け、 Enter キーを押します。 このスクリプトは BASE64 でエンコードされたバージョンの PAT を返し、その値をコピーして次の手順で使用します。
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(); })"
手記
2024 年 7 月の時点で、Azure DevOps 個人用アクセス トークン (AT) の長さは 82 文字です。 一部のツールでは、Base64 にトークンをエンコードするときに自動改行が挿入される場合があります。 これを回避するには、-w0 コマンドで フラグを使用して、出力が 1 行に残っていることを確認します。
このチュートリアルでは、既定で単一行の Base64 文字列を生成する Node の Buffer メソッドを使用します。
Linux または macOS を使用している場合は、ターミナルで次のコマンドを実行して、個人用アクセス トークン (PAT) を Base64 でエンコードされた文字列に変換できます。 次の手順で使用する結果の値をコピーします。
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64 -w0
ユーザー レベルの npmrc ファイルのプレースホルダー [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] を、前の手順で生成した Base64 でエンコードされた個人用アクセス トークンに置き換えます。
Azure DevOps コレクションにサインインし、プロジェクトに移動します。
[成果物] を選択し、ドロップダウン メニューからフィードを選択し、[フィードに接続] を選択します。
左側から npm を選択し、 Project セットアップ セクションの手順に従って npmrc ファイルを構成し、フィードで認証します。
Azure DevOps コレクションにサインインし、プロジェクトに移動します。
アーティファクトを選択し、次にドロップダウンメニューからフィードを選択します。
[ フィードに接続] を選択し、左側のナビゲーション ウィンドウから npm を選択します。
プロジェクトのディレクトリに、package.json ファイルと同じディレクトリに .npmrc ファイルを追加し、Project setup セクションで指定したスニペットを npmrc ファイルに貼り付けます。 ファイルは次のようになります。
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
パッケージの読み取りおよび書き込みスコープで、個人アクセス トークンを生成します。
コマンド プロンプト ウィンドウで次のコマンドを実行します。 メッセージが表示されたら、個人用アクセス トークンを貼り付けて Enter キーを押します。 このスクリプトは BASE64 でエンコードされたバージョンの PAT を返し、その値をコピーして次の手順で使用します。
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(); })"
手記
2024 年 7 月の時点で、Azure DevOps 個人用アクセス トークン (AT) の長さは 82 文字です。 一部のツールでは、Base64 にトークンをエンコードするときに自動改行が挿入される場合があります。 これを回避するには、-w0 コマンドで フラグを使用して、出力が 1 行に残っていることを確認します。
このチュートリアルでは、既定で単一行の Base64 文字列を生成する Node の Buffer メソッドを使用します。
ユーザー レベルの .npmrc ファイルのプレースホルダー [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] を、前の手順で生成した Base64 でエンコードされた個人用アクセス トークンに置き換えます。
Azure DevOps コレクションにサインインし、プロジェクトに移動します。
[Artifacts] を選択し、[フィードに接続する] を選択します。
左側から npm を選択し、[ プロジェクトのセットアップ ] セクションの手順に従って .npmrc を構成します。 ファイルを作成し、フィードで認証します。
Azure DevOps コレクションにサインインし、プロジェクトに移動します。
アーティファクトを選択し、次にドロップダウンメニューからフィードを選択します。
[ フィードに接続] を選択し、左側のナビゲーション ウィンドウから npm を選択します。
プロジェクトのディレクトリに、package.json ファイルと同じディレクトリに .npmrc ファイルを追加し、Project setup セクションで指定したスニペットを npmrc ファイルに貼り付けます。 ファイルは次のようになります。
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
パッケージの読み取りおよび書き込みスコープで、個人アクセス トークンを生成します。
コマンド プロンプト ウィンドウで次のコマンドを実行します。 メッセージが表示されたら、個人用アクセス トークンを貼り付けて Enter キーを押します。 このスクリプトは BASE64 でエンコードされたバージョンの PAT を返し、その値をコピーして次の手順で使用します。
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(); })"
手記
2024 年 7 月の時点で、Azure DevOps 個人用アクセス トークン (AT) の長さは 82 文字です。 一部のツールでは、Base64 にトークンをエンコードするときに自動改行が挿入される場合があります。 これを回避するには、-w0 コマンドで フラグを使用して、出力が 1 行に残っていることを確認します。
このチュートリアルでは、既定で単一行の Base64 文字列を生成する Node の Buffer メソッドを使用します。
ユーザー レベルの .npmrc ファイルのプレースホルダー [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] を、前の手順で生成した Base64 でエンコードされた個人用アクセス トークンに置き換えます。
関連コンテンツ