Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022
Azure Artifacts 可讓開發人員管理來自各種來源的套件,包括公開註冊表,例如 npmjs.com,以及私人套件來源。 若要使用 Azure Artifacts 進行驗證,您必須設定 npmrc 組態檔。 此檔案會儲存 npm 所使用的摘要 URL 和認證,並可讓您自定義客戶端行為,例如設定 Proxy、定義預設套件位置,或設定私人摘要的存取權。
npmrc 檔案通常位於使用者的主目錄中,但也可以在專案層級建立以覆寫預設設定。
先決條件
連接到訊息來源
Azure Artifacts 建議使用兩個不同的 .npmrc 組態檔。 其中一個應該儲存在本機以儲存您的認證,另一個應該新增到您的項目目錄中,與 package.json 一起,以定義您的提要 URL。 這種方法可讓您共用專案層級設定,而不需要公開敏感性資訊。
若要設定認證檔案,請建立或更新 .npmrc 檔案,並包含所有必要的登錄認證。 這可讓 npm 用戶端輕鬆地存取您的認證以進行驗證。
下列步驟會引導您設定專案層級組態檔。 選擇對應你的開發環境的索引標籤:
注意
Azure DevOps Server 不支援 vsts-npm-auth。
登入您的 Azure DevOps 組織,然後流覽至您的專案。
選取 構件,然後從下拉選單中選取您的資料流。
選取 [連線至摘要 ],然後從左側瀏覽窗格中選取 npm 。
在與 package.json 相同的目錄中,將 .npmrc 新增至您的專案,並將 [項目設定] 區段所提供的代碼段貼到 檔案中。
執行下列命令,來將 Azure Artifacts 令牌新增至用戶層級 .npmrc 檔案。 您不需要每次執行此作業—npm 會在重新整理令牌時傳回 401 未經授權 錯誤。
vsts-npm-auth -config .npmrc
登入您的 Azure DevOps 組織,然後流覽至您的專案。
選取 構件,然後從下拉選單中選取您的資料流。
選取 [連線至摘要 ],然後從左側瀏覽窗格中選取 npm 。
將 .npmrc 檔案新增至項目的目錄。 這應該是 您package.json 檔案所在的相同目錄。
將 [項目設定 ] 區段中所提供的代碼段貼到 .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 個人存取權杖 (PAT) 長度為 82 個字元。 某些工具在將標記編碼為 Base64 時可能會插入自動換行符。 若要避免這種情況,請將旗標與 -w0 命令搭配使用,以確保輸出保持在單行上。
在本教學中,我們使用 Node 的 Buffer 方法,預設會產生單行 Base64 字串。
如果您使用 Linux 或 macOS,您可以在終端機中執行下列命令,將個人存取令牌 (PAT) 轉換為 Base64 編碼的字串。 複製產生的值,以在下一個步驟中使用。
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64 -w0
將使用者層級 npmrc 檔案中的預留位置 [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] 取代為您在上一個步驟中產生的 Base64 編碼個人存取權杖。
登入您的 Azure DevOps 集合,然後流覽至您的專案。
選取 項目,從下拉功能表中選取您的訂閱源,然後選取 連接到訂閱源。
從左側選取 npm,然後遵循 專案設置 區段中的步驟來設定 npmrc 檔案,並使用您的 feed 進行身份驗證。
登入您的 Azure DevOps 集合,然後流覽至您的專案。
選取 構件,然後從下拉選單中選取您的資料流。
選取 [連線至摘要 ],然後從左側瀏覽窗格中選取 npm 。
在專案目錄中新增 .npmrc 檔案,與 package.json 檔案相同的目錄,並將 專案設定 區段中提供的程式碼片段貼到 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 個人存取權杖 (PAT) 長度為 82 個字元。 某些工具在將標記編碼為 Base64 時可能會插入自動換行符。 若要避免這種情況,請將旗標與 -w0 命令搭配使用,以確保輸出保持在單行上。
在本教學中,我們使用 Node 的 Buffer 方法,預設會產生單行 Base64 字串。
將您的用戶層級 .npmrc 檔案中的佔位元 [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] 替換為您在上一個步驟中生成的 Base64 編碼的個人存取令牌。
提示
在 .npmrc 檔案中,使用多個註冊表可以透過 範圍 和 上游來源 來支援。
相關內容