Verdaccio 私有 NPM 仓库
Verdaccio 是一个基于 Node.js 的轻量级、零配置私有 npm 注册中心(private proxy registry),目前是前端/Node 团队自建 npm 私服最主流的开源方案
一句话:对内能托管私有包、对外能透明代理 npmjs.org 并缓存依赖的单进程 Node 服务,默认端口 4873,npm/yarn/pnpm 直接改 registry 指向它就能用,无需换工作流
核心价值:
- 缓存淘宝 npm 源 / 官方源,前端构建不再外网下载依赖,Jenkins 内网极速拉取,不会网络超时失败
- 上传公司内部公共组件(内部 UI、工具库),业务项目直接从内网仓库 install
- 统一管控依赖版本,锁定包版本,规避 lock 文件版本冲突
docker部署
1、创建目录,持久化数据(存储包、配置、用户)
# 创建持久化目录
mkdir -p /data/verdaccio/{conf,storage,plugins}
chmod 777 /data/verdaccio -R
2、编写配置文件/data/verdaccio/conf/config.yaml,如下:
# 存储包的目录
storage: /verdaccio/storage
# 插件目录
plugins: /verdaccio/plugins
# 上游公有源(优先淘宝,避免官方源超时)
uplinks:
npmjs:
url: https://registry.npmmirror.com/
max_fails: 3
timeout: 60000
# 包访问权限
packages:
# 公司内部包(@company开头,按需修改你的组织前缀)
'@company/*':
access: $all
publish: $authenticated
unpublish: $authenticated
# 所有公有包
'*':
access: $all
publish: $authenticated
proxy: npmjs # 缓存到内网
# 账号密码存储
auth:
htpasswd:
file: /verdaccio/conf/htpasswd
max_users: 100
# 服务端口,内网访问地址:http://服务器IP:4873
listen: 0.0.0.0:4873
# 日志
logs:
- {type: stdout, format: pretty, level: info}
3、启动
docker run -d \
--name verdaccio \
--restart always \
-p 4873:4873 \
-v /data/verdaccio/conf:/verdaccio/conf \
-v /data/verdaccio/storage:/verdaccio/storage \
-v /data/verdaccio/plugins:/verdaccio/plugins \
verdaccio/verdaccio:latest
4、进入容器中创建用户名和密码:
docker exec -it --user root verdaccio /bin/sh
apk add --no-cache apache2-utils #安装htpasswd
htpasswd -B -c /verdaccio/conf/htpasswd admin #创建用户名密码


