Verdaccio 私有仓库搭建,看这里就够了

38 阅读2分钟

私有 npm 仓库的搭建可以帮助团队保护核心代码业务逻辑、加速依赖下载以及在离线或内网环境下进行开发。 目前主流的搭建方案有三种:Verdaccio(最推荐)、Nexus 以及 GitHub/GitLab Packages。

1. 方案对比

方案优点缺点适用场景
Verdaccio轻量、配置简单、专为 npm 设计功能相对单一(仅限 JS 生态)中小型团队、前端核心项目
Nexus功能强大,支持 Java/Docker/PyPI 等多种协议配置较重,占用内存大大型企业、全栈统一管理
GitHub/GitLab无需维护服务器,集成在 CI/CD 中依赖外部平台,可能有存储限制云端开发、不想自建服务的团队

2. 最快搭建方式:Verdaccio

Verdaccio 是一个开源的轻量级私有 npm 代理注册表,安装和使用都非常直观。

第一步:安装与启动 推荐使用 Docker 部署,这样环境更干净:

拉取镜像并启动

docker run -it --rm --name verdaccio
-p 4873:4873
verdaccio/verdaccio

或者使用 pm2 在服务器直接安装: npm install -g verdaccio

启动

verdaccio

第二步:添加用户与登录 默认情况下,Verdaccio 允许任何人注册。在终端运行:

设置指向私有库地址

npm set registry http://localhost:4873

创建新用户

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

第三步:发布与使用 在你的项目根目录下(确保有 package.json),运行: npm publish

发布成功后,你就可以在浏览器打开 http://localhost:4873 看到你的私有包了。

3. 核心配置要点

搭建完成后,你通常需要修改 config.yaml 配置文件:

  • Uplinks (上游代理): 当私有库找不到某个包时,它会自动去官方 npm 镜像拉取并缓存。 uplinks: npmjs: url: registry.npmjs.org/ taobao: url: registry.npmmirror.com/

  • Packages (权限控制): 你可以设置哪些包是私有的,哪些人可以查看或发布。 packages: '@my-company/*': access: authenticatedpublish:authenticated publish: authenticated unpublish: root

4. 如何在团队中切换仓库

为了不频繁修改全局 registry,建议在项目根目录下创建 .npmrc 文件:

.npmrc

registry=http://your-server-ip:4873/

如果使用了 scope (例如 @tools/logger)

@tools:registry=http://your-server-ip:4873/

这样,当团队成员在项目内运行 npm install 时,会自动优先从私有仓库下载。