Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022
NPM 範圍有助於將相關套件分類到群組中。 它們讓你可以建立與其他使用者建立套件名稱相同的套件,且不會有衝突。 使用範圍時,您可以加入範圍前綴 @scopeName,並將 .npmrc 檔案設定為使用具有該範圍的摘要,藉此區分公用與私人套件。
Azure Artifacts 支援從訂閱源或公開登錄檔發佈與下載有範圍與非範圍的套件。 NPM 範圍在使用自架式本地伺服器且沒有網路連線時特別有用,因為在這些情況下設定上游來源不可行。 總結來說,當你使用內窺鏡時:
- 你不用擔心名稱衝突。
- 安裝或發佈套件不需要更改 npm 登錄檔。
- 每個 npm 組織或使用者都有自己的範圍,只有擁有者或範圍成員能將套件發佈到該範圍內。
Prerequisites
| 產品 | 要求 |
|---|---|
| Azure DevOps | - Azure DevOps 組織。 - 一個Azure DevOps 計畫。 - Azure Artifacts 資料饋送。 - 下載並安裝 Node.js 和 npm。 |
連接到您的動態消息
在設定 npm 範圍之前,先把你的專案連接到 Azure Artifacts feed。 務必完成先修條件並建立訂閱,然後依照這些步驟操作。
Azure Artifacts 建議使用兩個獨立的 .npmrc 檔案。 在使用者目錄裡保留一個檔案來存放憑證,第二個檔案則放在與 package.json 檔案相同的目錄,用來儲存你針對資訊流的專屬設定。
登入 Azure DevOps,然後進入你的專案。
選取 構件,然後從下拉選單中選取您的資料流。
選擇 「連接到串流」,然後從左側導覽窗格選擇 npm 。
如果你是第一次在 npm 上使用 Azure Artifacts,請選擇「取得工具」,並依照指示安裝作業系統的前置條件。 你必須先安裝 Node.js 和 npm。 接著,請根據您使用的作業系統,在 Windows 上安裝 vsts-npm-auth,或在非 Windows 環境中設定憑證。 非 Windows 相關指引請參見「連接至串流 - 其他」。
在和你 package.json 檔案相同的目錄裡建立一個 .npmrc 檔案,然後把 Project 設定區段的片段貼到那個檔案裡。
在 Windows 上,執行以下指令,將 Azure Artifacts 令牌加入你的使用者層級 .npmrc 檔案。 你不需要每次都執行這個指令。 當令牌到期時,npm 會回傳 401 未授權 錯誤,表示該重新整理了。
vsts-npm-auth -config .npmrc
備註
vsts-npm-auth在 Azure DevOps Server 中不被支援。 非 Windows 相關指引請參見「連接至串流 - 其他」。
範圍設定
若要在 Azure Artifacts 中使用範圍命名,請更新您的專案 .npmrc 檔案,讓您發佈或安裝的具範圍命名套件可透過您的摘要來解析。 把 registry=<YOUR_SOURCE_URL> 替換為 @ScopeName:registry=<YOUR_SOURCE_URL>。
同時更新你的 package.json 檔案,包含範圍名稱和套件名稱,例如: { "name": "@ScopeName/PackageName" }。 以下範例說明如何配置組織範圍與專案範圍的資訊流。
組織範圍的資訊流:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/{ "name": "@ScopeName/PackageName" }專案範圍的動態消息:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/{ "name": "@ScopeName/PackageName" }
範例
.npmrc 檔案:
@local:registry=https://pkgs.dev.azure.com/FabrikamOrg/NpmDemo/_packaging/FabrikamFeed/npm/registry/package.json 檔案:
{ "name": "@demo/js-e2e-express-server", "version": "2.0.0", "description": "JavaScript server written with Express.js", "main": "index.js", "directories": { "doc": "docs", "test": "test" } }
發佈限定範圍的套件
在你設定好範圍並更新專案檔案後,打開命令提示字元視窗,進入專案目錄,執行以下指令來發佈你的範圍化套件。 在前一個例子中,套件是在 @local scope 之下發佈的。
npm publish
上游來源與範圍
上游來源提供最多的彈性。 透過使用上游來源,你可以同時使用Azure Artifacts feed 中的有範圍和無範圍的套件,同時也能使用像 npmjs.com 這類公開登錄檔的套件。 當你希望單一串流同時作為內部套件和核准外部依賴的主要來源時,這種方法非常有效。
瞄準鏡雖然限制較多,但在適當情況下仍可作為實用選項。 使用作用域時,每個套件名稱必須以 @<scope>開頭,這表示你需要在整個套件中採用並維持這個命名慣例。 例如,如果你將套件發佈為 @local/my-package,你必須在所有被引用的套件中繼續使用該作用域名稱。
這個要求可能會增加額外負擔,尤其是如果你打算之後將相同的套件發佈到公開登錄檔。 如果你在部署套件時移除範圍,也必須更新 package.json 檔案和相關專案中的對應參考。
即使有這些限制,當上游訊號不實用時,示波器仍可作為可行的替代方案。 這在孤立或自架環境中尤其明顯,因為無法存取公開登錄檔,且你想避免套件名稱衝突,同時保持套件在資訊流中有序。