Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
Azure Artifactsでは、.npmrc 構成ファイルを使用して、フィードを使用して npm クライアントを認証します。 推奨されるセットアップでは、フィードの構成と資格情報が 2 つの異なる .npmrc ファイルに保持されます。フィード URL を格納するプロジェクト レベルのファイル ( package.jsonと共にチェックイン) と、資格情報を格納するユーザー レベルのファイル (コミットなし) です。
前提 条件
フィードに接続する
オペレーティング システムに一致するタブを選択し、手順に従って .npmrc ファイルを構成します。
手記
vsts-npm-auth は、Azure DevOps Server ではサポートされていません。
Azure DevOps 組織にサインインしてから、プロジェクトに移動します。
アーティファクトを選択し、次にドロップダウンメニューからフィードを選択します。
[ フィードに接続] を選択し、左側のナビゲーション ウィンドウから npm を選択します。
vsts-npm-authをインストールしなかった場合は、次のコマンドを実行します。
npm install -g vsts-npm-auth --registry https://registry.npmjs.com --always-auth false
.npmrc ファイルをpackage.jsonと同じディレクトリ内のprojectに追加し、Project setup セクションのスニペットをファイルに貼り付けます。
次のコマンドを実行して、ユーザー レベルの .npmrc ファイルにトークンを追加します。 npm は、トークンの有効期限が切れると 401 Unauthorized エラーを返します。このコマンドをもう一度実行して更新します。
vsts-npm-auth -config .npmrc
Azure DevOps 組織にサインインしてから、プロジェクトに移動します。
アーティファクトを選択し、次にドロップダウンメニューからフィードを選択します。
[ フィードに接続] を選択し、左側のナビゲーション ウィンドウから npm を選択します。
.npmrc ファイルをpackage.jsonと同じディレクトリ内のprojectに追加し、Project setup セクションのスニペットをファイルに貼り付けます。 ファイルは次のようになります。
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
資格情報のセットアップ
次のスニペットをコピーして、ユーザーレベルの 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=[ENTER_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
Packaging>Read > 書き込みスコープを使用して個人用アクセス トークンを生成します。
次のいずれかの方法を使用して PAT を Base64 エンコードします。
Node.js (すべてのプラットフォーム): 次のコマンドを実行し、プロンプトが表示されたら 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(); })"
macOS または Linux: 次のコマンドを実行し、出力をコピーします。
echo -n "YOUR_PERSONAL_ACCESS_TOKEN" | base64
ユーザー レベルの .npmrc ファイル内の[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]プレースホルダーをエンコードされた値に置き換えます。
Azure DevOps コレクションにサインインし、プロジェクトに移動します。
[ 成果物] を選択し、ドロップダウン メニューからフィードを選択し、[ フィードに接続] を選択します。
npm を選択し、Project セットアップ セクションの手順に従って .npmrc ファイルを構成し、フィードで認証します。
Azure DevOps コレクションにサインインし、プロジェクトに移動します。
アーティファクトを選択し、次にドロップダウンメニューからフィードを選択します。
[ フィードに接続] を選択し、左側のナビゲーション ウィンドウから npm を選択します。
.npmrc ファイルをpackage.jsonと同じディレクトリ内のprojectに追加し、Project setup セクションのスニペットをファイルに貼り付けます。 ファイルは次のようになります。
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
資格情報のセットアップ
次のスニペットをコピーし、.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
Packaging>Read > 書き込みスコープを使用して個人用アクセス トークンを生成します。
次のコマンドを実行し、プロンプトが表示されたら PAT を入力し、結果の Base64 でエンコードされた値をコピーします。
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]プレースホルダーをエンコードされた値に置き換えます。
関連コンテンツ