Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022
Azure Artifacts 使用 .npmrc 設定檔來認證 npm 用戶端與 feeds。 建議的設定方式是將摘要來源設定和認證資訊分別放在兩個獨立的 .npmrc 檔案中:一個是專案層級檔案(與你的 package.json 一起簽入版本控制),用來儲存摘要來源 URL;另一個是使用者層級檔案(絕不提交到版本控制),用來儲存你的認證資訊。
先決條件
連接到訊息來源
選擇與你作業系統相符的分頁,並依步驟設定你的 .npmrc 檔案:
注意
Azure DevOps Server 不支援 vsts-npm-auth。
登入您的 Azure DevOps 組織,然後移至您的專案。
選取 構件,然後從下拉選單中選取您的資料流。
選擇 「連接到串流」,然後從左側導覽窗格選擇 npm 。
如果你還沒安裝 vsts-npm-auth,請執行以下指令:
npm install -g vsts-npm-auth --registry https://registry.npmjs.com --always-auth false
在你的 project 同一個資料夾package.json裡新增一個 .npmrc 檔案,然後把 Project 設定區塊的片段貼到檔案裡。
執行以下指令,將令牌加入你的使用者層級 .npmrc 檔案。 當令牌到期時,npm 會回傳 401 未授權 錯誤——再次執行此指令以刷新。
vsts-npm-auth -config .npmrc
登入您的 Azure DevOps 組織,然後移至您的專案。
選取 構件,然後從下拉選單中選取您的資料流。
選擇 「連接到串流」,然後從左側導覽窗格選擇 npm 。
在你的 project 同一個資料夾package.json裡新增一個 .npmrc 檔案,然後把 Project 設定區塊的片段貼到檔案裡。 您的檔案看起來應該如下所示:
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>讀寫範圍的個人存取權杖。
使用下列其中一種方法,將你的 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
將使用者層級的 [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] 檔案中的 佔位符替換為經編碼的值。
登入你的 Azure DevOps 集合,然後進入你的專案。
選取 [工件],從下拉功能表中選取您的訊息來源,然後選取 [連線至訊息來源]。
選擇 npm,然後依照 Project 設定區塊的步驟設定你的 .npmrc 檔案,並與你的訂閱源進行認證。
登入你的 Azure DevOps 集合,然後進入你的專案。
選取 構件,然後從下拉選單中選取您的資料流。
選擇 「連接到串流」,然後從左側導覽窗格選擇 npm 。
在你的 project 同一個資料夾package.json裡新增一個 .npmrc 檔案,然後把 Project 設定區塊的片段貼到檔案裡。 您的檔案看起來應該如下所示:
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>讀寫範圍的個人存取權杖。
執行下列命令,在系統提示時輸入 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(); })"
將使用者層級的 [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] 檔案中的 佔位符替換為經編碼的值。
提示
在 .npmrc 檔案中,使用多個註冊表可以透過 範圍 和 上游來源 來支援。
相關內容