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      #创建用户名密码

标签