创建自己的 npm 私有库(私有包托管或私有 registry)有多种方案,根据你的需求(如免费、简单自建、企业级、托管服务)可以选择不同方式。以下是当前(2025 年底)主流方案的总结,按推荐优先级和适用场景排序:
1. 免费托管在 GitHub Packages(推荐入门/小团队免费方案)
- 描述 :直接利用 GitHub 的 Packages 服务托管私有 npm 包,与你的私有 Git 仓库关联。包名通常为
@your-org/package-name。 - 优点 :
- 完全免费(即使私有包)。
- 无需额外服务器,集成 GitHub 权限管理(仓库访问者自动有包访问权)。
- 支持 scoped 包,发布简单。
- 缺点 :
- 需要 GitHub 账户和 Personal Access Token (PAT) 配置认证。
- 存储限额取决于 GitHub 计划(免费版足够小团队)。
- 步骤简要 :
- 在 package.json 中设置
"publishConfig": { "registry": "https://npm.pkg.github.com/" }。 - 创建 PAT(scopes: read:packages, write:packages)。
- 配置 .npmrc 文件添加 token 和 registry。
npm publish即可。
- 在 package.json 中设置
- 适用:个人或小团队,不想自建服务器。
2. 自建私有 registry 使用 Verdaccio(推荐自建轻量方案)
- 描述:Verdaccio 是一个开源、轻量的 Node.js 私有 npm registry,支持代理公共 npm(缓存加速)、私有包发布,无需数据库。
- 优点 :
- 零配置启动,免费开源。
- 支持 Docker 部署,易扩展(插件、认证)。
- 可以缓存公共包,内网加速下载。
- 界面友好,支持用户管理。
- 缺点 :
- 需要自己的服务器(VPS 或内网机)。
- 大规模需考虑存储和备份。
- 步骤简要 :
npm install -g verdaccio或用 Docker 运行。- 启动后访问 http://localhost:4873。
- 配置 uplink 代理 npmjs.org 或 taobao 镜像。
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 包默认私有。
如果你有具体需求(如预算、服务器环境、团队规模),可以提供更多细节,我可以给出更针对性的步骤!