搭建 npm 私有仓库最稳妥的方案是使用 verdaccio,它是一个零配置的轻量级 node.js 服务,能作为缓存代理并支持用户权限管理。只需全局安装 verdaccio 并启动服务,即可在本地或局域网内通过配置 .npmrc 指向该地址来发布和拉取包。默认情况下它允许匿名访问,但可以通过配置文件开启认证以保护敏感代码。

如何配置 Verdaccio 以启用用户认证
要限制只有授权用户才能发布包,需要修改 config.yaml 中的 auth 部分。Verdaccio 内置了 htpasswd 认证插件,无需额外数据库。配置后,使用 npm adduser 登录,之后发布的包将受权限控制,未登录用户只能读取公开包或无法操作。

verdaccio
# config.yaml 关键片段
auth:
htpasswd:
file: ./htpasswd
max_users: 1000
运行上述命令启动服务后,编辑 config.yaml 确保 auth 块未被注释。接着执行 npm adduser --registry http://localhost:4873 创建管理员账户。此时尝试发布一个私有包,若未登录会返回 401 错误,登录成功后则写入存储。
如何将现有项目指向私有仓库发布
在项目根目录创建或编辑 .npmrc 文件,指定 registry 为你的 Verdaccio 地址。发布前需确保 package.json 中的 name 字段包含作用域(scope),例如 @myorg/mypackage,因为 Verdaccio 默认将带 scope 的包视为私有。执行 npm publish 即可将包推送到私有仓库。

# .npmrc registry=http://localhost:4873 @myorg:registry=http://localhost:4873
package.json 示例
{
"name": "@myorg/mypackage",
"version": "1.0.0",
"description": "Private package"
}
创建 .npmrc 后,运行 npm publish。如果包名不带 scope,Verdaccio 可能将其视为公共包或根据配置拒绝。带上 scope 后,包会被存储在私有区域。其他团队成员只需拥有相同的 .npmrc 配置和登录状态,即可通过 npm install @myorg/mypackage 拉取依赖。
私有仓库中包的存储结构与版本管理逻辑是什么
Verdaccio 默认将数据存储在 ~/.local/share/verdaccio/storage 目录下。每个包对应一个文件夹,内部按版本号组织 JSON 元数据和 tarball 文件。当发布新版本时,它会追加新记录而非覆盖旧版本,确保历史版本可回溯。删除包需要使用 npm unpublish 且需满足一定条件,如发布超过 24 小时或强制标志。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











