搜尋
首頁web前端js教程私人 npm 儲存庫

Private npm Repositories

以下是有關如何設定私人 npm 儲存庫的深入指南,包括各種替代方案和實用的程式碼片段,可協助您入門。無論您是獨立開發人員還是大型團隊的一員,私下託管您自己的 npm 套件都可以為您提供控制力、靈活性和更高的安全性。


為什麼要使用私有 npm 儲存庫?

  1. 安全與控制:將您的套件和程式碼保留在內部。
  2. 更快的建置:減少外部依賴和網路延遲。
  3. 存取管理:控制誰可以存取或發布某些套件。
  4. 版本控制與存檔:維護內部包的多個版本,而不會造成混亂或外部中斷。

託管私有 npm 儲存庫的常見方法

  1. 自架解決方案

    • Verdaccio:流行的開源輕量級 npm 代理註冊表。
    • Sonatype Nexus:用於託管多種儲存庫格式(npm、Maven 等)的綜合平台。
    • JFrog Artifactory:廣泛使用的二進位儲存庫管理器。
  2. 由 Git 主機管理

    • GitHub 套件:在 GitHub 組織內託管私有 npm 套件。
    • GitLab Packages:提供內建的 npm 註冊表作為 GitLab DevOps 平台的一部分。
    • Bitbucket(透過第三方整合或自訂解決方案)。
  3. npm 企業版

    • 如果您擁有大型團隊並需要企業級功能(進階存取控制、安全審核等),npm Enterprise 可能是個選項。

1. 使用 Verdaccio 設定私有 npm 註冊表

Verdaccio 是一個開源 npm 註冊表代理,易於設定和使用。它允許您託管私有包並快取官方 npm 註冊表中的公用包。

1.1 安裝維達西奧

假設 Node.js 已安裝在您的電腦上:

# Install Verdaccio globally
npm install --global verdaccio

1.2 啟動維達喬

verdaccio

預設情況下,Verdaccio 在連接埠 4873 上啟動。您可以開啟瀏覽器造訪 http://localhost:4873 以查看 Verdaccio UI。

1.3 配置Verdaccio

Verdaccio 在第一次執行時建立預設設定檔。您可以透過編輯來自訂它(檔案路徑可能會根據您的系統而有所不同)。典型的設定 (~/.config/verdaccio/config.yaml) 如下圖所示:

# Install Verdaccio globally
npm install --global verdaccio
  • storage:Verdaccio 儲存包的目錄。
  • uplinks:指向官方 npm 註冊表。
  • packages:定義存取、發布和代理的規則。

1.4 建立使用者並登入

verdaccio

這會提示輸入使用者名稱、密碼和電子郵件。完成後,您將登入您的私人註冊表。

1.5 發布包

在具有有效 package.json 的套件目錄中:

storage: ./storage
auth:
  htpasswd:
    file: ./htpasswd
    max_users: 100

uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs

  '**':
    access: $all
    publish: $authenticated
    proxy: npmjs

middlewares:
  audit:
    enabled: true

logs:
  - { type: stdout, format: pretty, level: http }

就是這樣!您的套件現已發佈到您本地的 Verdaccio 註冊表。

1.6 從您的私人註冊表安裝

要從此登錄安裝軟體包,您可以:

  • 使用 --registry 標誌:
npm adduser --registry http://localhost:4873
  • 或將您的 .npmrc 設定為全域或特定項目中指向此登錄:
npm publish --registry http://localhost:4873

2. 使用 GitHub 套件

如果您已經在 GitHub 上託管程式碼,那麼使用 GitHub Packages 可以是一種將所有內容都集中在一個屋簷下的便捷方法。

2.1 為您的儲存庫啟用 GitHub 套件

  1. 前往 GitHub 上的儲存庫。
  2. 點選設定 -> 套餐
  3. 確保為您的組織/帳戶啟用 GitHub Packages。

2.2 對 GitHub 套件進行身份驗證

使用 read:packages 和 write:packages 範圍建立個人存取權杖 (PAT)。您可以從 開發者設定 -> 下的 GitHub 設定產生此令牌。 個人存取權令牌

將您的令牌加入 .npmrc:

  npm install <package-name> --registry http://localhost:4873
</package-name>

將 YOUR_GITHUB_USERNAME 替換為您的實際使用者名稱或 GitHub 組織名稱。

2.3 將套件發佈到 GitHub Packages

使用與您的 GitHub 使用者名稱或組織相符的範圍更新您的 package.json:

  registry=http://localhost:4873

然後發佈:

//npm.pkg.github.com/:_authToken=YOUR_PERSONAL_ACCESS_TOKEN
@YOUR_GITHUB_USERNAME:registry=https://npm.pkg.github.com

2.4 從 GitHub 套件安裝

確保 .npmrc 指向 GitHub Packages,然後:

{
  "name": "@YOUR_GITHUB_USERNAME/my-private-package",
  "version": "1.0.0",
  "publishConfig": {
    "registry": "https://npm.pkg.github.com"
  }
}

3. 使用 GitLab 套件

GitLab也提供了內建的套件註冊表。

3.1 設定 GitLab 套件註冊表

  1. 導航到您的 GitLab 專案。
  2. 前往設定 -> 套件和登錄 -> 包裝登錄

3.2 配置.npmrc

使用您的 GitLab 憑證建立或更新本機/全域 .npmrc 檔案:

npm publish

3.3 發佈到GitLab

更新您的 package.json 範圍以符合 GitLab 群組或使用者命名空間:

npm install @YOUR_GITHUB_USERNAME/my-private-package

然後發佈:

# Install Verdaccio globally
npm install --global verdaccio

3.4 從 GitLab 套件安裝

verdaccio

4. 使用 Sonatype Nexus 或 JFrog Artifactory 自架

如果您正在尋找支援多種儲存庫類型的強大的本機解決方案,Sonatype NexusJFrog Artifactory 可能是您的最佳選擇。

4.1 Nexus 儲存庫

  1. 在您的伺服器或開發電腦上安裝 Nexus Repository Manager。
  2. 登入 Nexus UI:http://your-nexus-server:8081。
  3. 儲存庫設定建立一個新的npm(託管)儲存庫。
  4. 設定身份驗證(如果需要)並記下 URL。

使用類似的 .npmrc 設定將您的 npm 用戶端指向新的 Nexus npm 儲存庫:

storage: ./storage
auth:
  htpasswd:
    file: ./htpasswd
    max_users: 100

uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs

  '**':
    access: $all
    publish: $authenticated
    proxy: npmjs

middlewares:
  audit:
    enabled: true

logs:
  - { type: stdout, format: pretty, level: http }

照常發佈您的包包:

npm adduser --registry http://localhost:4873

4.2 JFrog 人工工廠

  1. 安裝並啟動 Artifactory。
  2. 在 Artifactory UI 中,為 npm 建立一個 本機儲存庫
  3. 類似地配置 .npmrc:
npm publish --registry http://localhost:4873

發布使用:

  npm install <package-name> --registry http://localhost:4873
</package-name>

5.npm 企業版

對於需要完全控制、審核和進階安全性的大型組織,npm Enterprise 是一個選擇。它提供:

  • 單一登入 (SSO) 整合。
  • 增強的安全掃描和審核。
  • 細粒度存取控制

請參閱 npm Enterprise 文件以取得設定說明。


最佳實踐和技巧

  1. 使用範圍:確定私有套件(@company/your-package)的範圍有助於將它們與公用套件區分開來。
  2. .npmrc 管理
    • 使用每個項目 .npmrc 檔案以避免混淆。
    • 使憑證不受版本控制。
  3. 使用 CI/CD 自動化:將發布步驟整合到 CI/CD 管道中以確保一致性。
  4. 設定代理:大多數自架註冊表可以代理公共 npm 註冊表,因此您無需在註冊表之間切換來安裝常見依賴項。
  5. 監控與審核:追蹤登錄中的下載、版本和活動。

結論

設定私人 npm 儲存庫讓您可以自由地安全地管理和託管自己的套件。無論您是使用 Verdaccio 等自架解決方案、利用 GitHub Packages 或 GitLab Packages 等託管解決方案,還是選擇 Nexus、Artifactory 或 npm Enterprise 等企業解決方案,基本原理都是一樣的:

  1. 設定註冊表。
  2. 設定身份驗證。
  3. 發布並使用您的包。

選擇最適合您組織在安全性、可擴充性和維護方面的要求的方法。透過上面的範例和程式碼片段,您應該擁有堅實的基礎來開始託管您自己的私人 npm 套件。快樂編碼!

以上是私人 npm 儲存庫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

node.js流帶打字稿node.js流帶打字稿Apr 30, 2025 am 08:22 AM

Node.js擅長於高效I/O,這在很大程度上要歸功於流。 流媒體匯總處理數據,避免內存過載 - 大型文件,網絡任務和實時應用程序的理想。將流與打字稿的類型安全結合起來創建POWE

Python vs. JavaScript:性能和效率注意事項Python vs. JavaScript:性能和效率注意事項Apr 30, 2025 am 12:08 AM

Python和JavaScript在性能和效率方面的差異主要體現在:1)Python作為解釋型語言,運行速度較慢,但開發效率高,適合快速原型開發;2)JavaScript在瀏覽器中受限於單線程,但在Node.js中可利用多線程和異步I/O提升性能,兩者在實際項目中各有優勢。

JavaScript的起源:探索其實施語言JavaScript的起源:探索其實施語言Apr 29, 2025 am 12:51 AM

JavaScript起源於1995年,由布蘭登·艾克創造,實現語言為C語言。 1.C語言為JavaScript提供了高性能和系統級編程能力。 2.JavaScript的內存管理和性能優化依賴於C語言。 3.C語言的跨平台特性幫助JavaScript在不同操作系統上高效運行。

幕後:什麼語言能力JavaScript?幕後:什麼語言能力JavaScript?Apr 28, 2025 am 12:01 AM

JavaScript在瀏覽器和Node.js環境中運行,依賴JavaScript引擎解析和執行代碼。 1)解析階段生成抽象語法樹(AST);2)編譯階段將AST轉換為字節碼或機器碼;3)執行階段執行編譯後的代碼。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。