npm私库太难管?我用Verdaccio五分钟搭了个内部组件仓库!
在公司内部开发npm包,是不是总绕不开这些痛点:
- 不方便发布私有包
- 外网 npm 太慢、还容易挂
- 权限控制不好做,团队之间乱用依赖
- 官方私库方案(GitHub Package、npm Enterprise)要钱又不好配
我现在都不用它们了,自从用了开源的 Verdaccio,轻量、自建、权限可控,关键:几分钟就能搭一个自己的 npm 私库!
什么是 Verdaccio?
Verdaccio是一个基于Node.js的轻量级私有npm仓库,支持:
- 本地发布私有包
- 自动代理和缓存公网npm包
- 基于用户、组的权限控制
- 完全支持npm/yarn/pnpm
- Docker一键部署
一句话:想在局域网内搞个npm企业私库,Verdaccio是目前最省事的选择。
五分钟部署 Verdaccio
1. Docker启动
docker run -d --name verdaccio \
-p 4873:4873 \
-v ~/.verdaccio:/verdaccio \
verdaccio/verdaccio
启动后,访问:http://localhost:4873,就看到Verdaccio的UI了。
2. 修改配置(可选)
Verdaccio默认配置文件在 ~/.verdaccio/config.yaml,可以设置:
- 包访问权限(auth)
- 存储路径(storage)
- 外部npm源代理(uplinks)
例如限制某些用户才能发布包:
packages:
"@myorg/*":
access: $authenticated
publish: admin
发布你的第一个私有包
1. 创建一个包
mkdir my-lib && cd my-lib
npm init -y
修改package.json:
{
"name": "@myorg/my-lib",
"version": "1.0.0",
"publishConfig": {
"registry": "http://localhost:4873"
}
}
2. 登录 + 发布
npm adduser --registry http://localhost:4873
npm publish
成功发布!在Web UI也能看到。
配合团队 CI/CD 的最佳实践
- 在 CI 中配置.npmrc自动登录:
- //localhost:4873/:_authToken=XXXXXX
- 将verdaccio镜像 + config一起打包进内网容器平台
- 配合nginx做反向代理,实现https访问和LDAP登录
Verdaccio vs 其他方案对比
特性 | Verdaccio | npm 企业私库 | GitHub Package |
成本 | 免费 | 收费 | 私包限制多 |
搭建复杂度 | 超简单 | 复杂 | 权限麻烦 |
内网支持 | 强 | 不友好 | |
权限管理 | 自定义 | 多组织复杂 | |
生态兼容性 | 完美支持 npm/yarn |
总结
如果你还在为npm私有包管理发愁,Verdaccio绝对是目前最友好、好用的解决方案之一:
- 五分钟搭建,团队立即可用
- 本地化管理,权限灵活
- 支持缓存外网依赖,安装提速
- 适合CI/CD环境集成、自建镜像方案
下篇要不要来个“Verdaccio 企业级部署实战”?评论区见!