【npm】如何创建自己的npm私有仓库?

创建自己的 npm 私有库(私有包托管或私有 registry)有多种方案,根据你的需求(如免费、简单自建、企业级、托管服务)可以选择不同方式。以下是当前(2025 年底)主流方案的总结,按推荐优先级和适用场景排序:

1. 免费托管在 GitHub Packages(推荐入门/小团队免费方案)

  • 描述 :直接利用 GitHub 的 Packages 服务托管私有 npm 包,与你的私有 Git 仓库关联。包名通常为 @your-org/package-name
  • 优点
    • 完全免费(即使私有包)。
    • 无需额外服务器,集成 GitHub 权限管理(仓库访问者自动有包访问权)。
    • 支持 scoped 包,发布简单。
  • 缺点
    • 需要 GitHub 账户和 Personal Access Token (PAT) 配置认证。
    • 存储限额取决于 GitHub 计划(免费版足够小团队)。
  • 步骤简要
    1. 在 package.json 中设置 "publishConfig": { "registry": "https://npm.pkg.github.com/" }
    2. 创建 PAT(scopes: read:packages, write:packages)。
    3. 配置 .npmrc 文件添加 token 和 registry。
    4. npm publish 即可。
  • 适用:个人或小团队,不想自建服务器。

2. 自建私有 registry 使用 Verdaccio(推荐自建轻量方案)

  • 描述:Verdaccio 是一个开源、轻量的 Node.js 私有 npm registry,支持代理公共 npm(缓存加速)、私有包发布,无需数据库。
  • 优点
    • 零配置启动,免费开源。
    • 支持 Docker 部署,易扩展(插件、认证)。
    • 可以缓存公共包,内网加速下载。
    • 界面友好,支持用户管理。
  • 缺点
    • 需要自己的服务器(VPS 或内网机)。
    • 大规模需考虑存储和备份。
  • 步骤简要
    1. npm install -g verdaccio 或用 Docker 运行。
    2. 启动后访问 http://localhost:4873
    3. 配置 uplink 代理 npmjs.org 或 taobao 镜像。
    4. npm set registry http://your-server:4873 并登录发布。
  • 适用:公司内网、私有化需求强,想控制一切。

3. 直接从 Git 仓库安装(最简单、无 registry 方案)

  • 描述:不建 registry,直接在 package.json 中依赖私有 Git 仓库(如 GitHub/GitLab 私有 repo)。

  • 示例

    复制代码
    "dependencies": {
      "@myorg/my-package": "git+ssh://git@github.com/myorg/my-package.git#v1.0.0"
    }
  • 优点:零成本、无需额外工具,版本用 tag 或 branch 控制。

  • 缺点:不是真正的 npm 包发布(无版本语义化管理)、安装需 SSH/HTTPS 认证、CI 中麻烦。

  • 适用:极简需求、临时共享代码。

4. 官方 npmjs.com 私有包(付费托管方案)

  • 描述:直接在 npm 官网发布私有 scoped 包(@yourname/package)。
  • 优点
    • 最官方、无缝集成公共 npm。
    • 支持组织(Orgs)和团队权限。
  • 缺点:付费(Pro 版约 $7/用户/月起,支持无限私有包)。
  • 适用:愿意付费、想和公共 npm 统一管理的企业。

5. 其他云托管或企业级方案

  • GitLab Package Registry:类似 GitHub,免费私有包托管,集成 GitLab CI。
  • AWS CodeArtifact:AWS 用户专用,付费,按使用计费。
  • Sonatype Nexus Repository:企业级,支持 npm + Maven 等多格式,免费社区版可用,但配置复杂。
  • JFrog Artifactory:类似 Nexus,强大但付费为主。

选择建议

  • 个人/小项目免费:优先 GitHub Packages 或直接 Git 依赖。
  • 公司内网/需要缓存加速:自建 Verdaccio(最流行,轻量)。
  • 大规模企业:Nexus 或付费 npm Orgs。
  • 注意事项:私有包发布时,避免在 package.json 中设 "private": true(会阻止发布),scoped 包默认私有。

如果你有具体需求(如预算、服务器环境、团队规模),可以提供更多细节,我可以给出更针对性的步骤!

相关推荐
ywf12151 小时前
前端的dist包放到后端springboot项目下一起打包
前端·spring boot·后端
恋猫de小郭1 小时前
2026,Android Compose 终于支持 Hot Reload 了,但是收费
android·前端·flutter
hpoenixf7 小时前
2026 年前端面试问什么
前端·面试
还是大剑师兰特7 小时前
Vue3 中的 defineExpose 完全指南
前端·javascript·vue.js
泯泷7 小时前
阶段一:从 0 看懂 JSVMP 架构,先在脑子里搭出一台最小 JSVM
前端·javascript·架构
mengchanmian8 小时前
前端node常用配置
前端
华洛8 小时前
利好打工人,openclaw不是企业提效工具,而是个人助理
前端·javascript·产品经理
xkxnq9 小时前
第六阶段:Vue生态高级整合与优化(第93天)Element Plus进阶:自定义主题(变量覆盖)+ 全局配置与组件按需加载优化
前端·javascript·vue.js
A黄俊辉A9 小时前
vue css中 :global的使用
前端·javascript·vue.js
小码哥_常10 小时前
被EdgeToEdge适配折磨疯了,谁懂!
前端