【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 包默认私有。

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

相关推荐
小二·15 小时前
Python Web 开发进阶实战:微前端架构初探 —— 基于 Webpack Module Federation 的 Vue 微应用体系
前端·python·架构
阿呆59115 小时前
html前端开发注释的写法
前端·html
pusheng202515 小时前
守护能源与数据的安全防线:从UL 2075标准解析储能及数据中心氢探技术的演进
前端·安全
.又是新的一天.15 小时前
【前端Web开发HTML5+CSS3+移动web视频教程】02 html - 列表、表格、表单
前端·html·html5
程序员鱼皮15 小时前
你的 IP 归属地,是咋被挖出来的?
前端·后端·计算机·程序员·互联网·编程经验
小酒星小杜15 小时前
在AI时代,技术人应该每天都要花两小时来构建一个自身的构建系统 - 总结篇
前端·vue.js·人工智能
燕山石头15 小时前
jeecg统一异常处理根据不同模块返回指定响应信息
前端
PyHaVolask15 小时前
CSRF跨站请求伪造
android·前端·csrf
程序员海军15 小时前
我的2025:做项目、跑副业、见人、奔波、搬家、维权、再回上海
前端·程序员·年终总结
我来整一篇15 小时前
[Razor] ASP.NET Core MVC 前端组件快速使用总结
前端·asp.net·mvc