【本地搭建npm私服】使用Verdaccio

使用Verdaccio搭建本地NPM私服及私有包管理指南

一、Verdaccio安装与基础配置

1. 安装Verdaccio

bash 复制代码
# 全局安装Verdaccio
npm install -g verdaccio

# 检查版本
verdaccio --version

2. 启动服务

bash 复制代码
verdaccio

启动后默认监听4873端口,访问 http://localhost:4873

3. 配置npm客户端

bash 复制代码
# 设置npm使用本地仓库
npm set registry http://localhost:4873/

# 恢复官方源(需要时使用)
npm set registry https://registry.npmjs.org/

二、配置文件详解

配置文件路径:~/.config/verdaccio/config.yaml

核心配置项:

yaml 复制代码
# 存储目录
storage: ./storage

# 认证配置
auth:
  htpasswd:
    file: ./htpasswd
    max_users: 1000  # -1禁止注册,1000允许1000用户

# 上游链接
uplinks:
  npmjs:
    url: https://registry.npmjs.org/

# 包访问控制
packages:
  '@scope/*':  # 作用域包
    access: $authenticated  # 访问权限
    publish: $authenticated # 发布权限
    proxy: npmjs  # 代理设置
    
  '**':  # 所有包
    access: $all
    publish: $authenticated
    proxy: npmjs

# 服务器配置
listen:
  - 0.0.0.0:4873  # 监听所有网络接口

三、用户管理

1. 创建用户

bash 复制代码
npm adduser --registry http://localhost:4873

按提示输入用户名、密码和邮箱

2. 登录用户

bash 复制代码
npm login --registry http://localhost:4873

3. 查看当前用户

bash 复制代码
npm whoami --registry http://localhost:4873

四、私有包管理

1. 发布私有包

bash 复制代码
# 在项目目录中
npm publish --registry http://localhost:4873

对于作用域包(@scope/package),需要:

bash 复制代码
npm publish --access=public --registry http://localhost:4873

2. 更新私有包

修改package.json中的version后:

bash 复制代码
npm publish --registry http://localhost:4873

3. 安装私有包

bash 复制代码
npm install @scope/package --registry http://localhost:4873

4. 删除私有包

bash 复制代码
npm unpublish @scope/package --force --registry http://localhost:4873

五、高级管理功能

1. 设置包访问权限

修改config.yaml:

yaml 复制代码
packages:
  '@private/*':
    access: $authenticated  # 仅认证用户可访问
    publish: admin group  # 仅admin组可发布

2. 使用插件扩展功能

安装存储插件示例:

bash 复制代码
npm install verdaccio-aws-s3-storage

配置插件:

yaml 复制代码
store:
  aws-s3-storage:
    bucket: your-bucket-name
    region: us-east-1

3. 配置HTTPS

生成证书:

bash 复制代码
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365

配置HTTPS:

yaml 复制代码
https:
  key: /path/to/key.pem
  cert: /path/to/cert.pem

六、日常维护

1. 备份数据

bash 复制代码
# 备份storage目录
tar -czvf verdaccio-backup.tar.gz ~/.config/verdaccio/storage

2. 清理旧版本

安装清理插件:

bash 复制代码
npm install verdaccio-clean-storage

配置自动清理:

yaml 复制代码
plugins:
  clean-storage:
    keep: 5  # 保留最近5个版本
    interval: 86400  # 每天清理一次(秒)

3. 性能监控

bash 复制代码
# 查看存储使用情况
du -sh ~/.config/verdaccio/storage

七、常见问题解决

  1. 发布失败:403 Forbidden

    • 检查用户是否已登录
    • 检查package.json中的name是否与已有包冲突
  2. 安装超时

    • 检查uplinks配置是否正确
    • 临时关闭代理:npm config rm proxy
  3. 存储空间不足

    • 清理旧版本:npm cache clean --force
    • 扩展storage目录或使用外部存储插件
  4. 插件不生效

    • 确保插件已安装在Verdaccio同目录下
    • 检查插件名称与配置一致

通过以上配置,你可以建立一个功能完善的本地NPM私有仓库,满足团队私有包管理需求。根据团队规模,可以进一步配置集群部署和负载均衡。

相关推荐
写代码的【黑咖啡】14 小时前
Python 中的自然语言处理利器:NLTK
前端·javascript·easyui
cuber膜拜14 小时前
Marp CLI快速入门
pdf·npm·markdown·ppt·marp
Swift社区14 小时前
Nginx 反向代理配置 React 前端与 Python 后端
前端·nginx·react.js
可问春风_ren14 小时前
Vue3 入门详解:从基础到实战
开发语言·前端·javascript·vue.js·前端框架·ecmascript·edge浏览器
一起养小猫14 小时前
Flutter for OpenHarmony 实战:从零开发一款五子棋游戏
android·前端·javascript·flutter·游戏·harmonyos
晚霞的不甘14 小时前
Flutter for OpenHarmony全面升级「今日运势」 应用的视觉与交互革新
前端·学习·flutter·前端框架·交互
学嵌入式的小杨同学15 小时前
【Linux 封神之路】文件操作 + 时间编程实战:从缓冲区到时间格式化全解析
linux·c语言·开发语言·前端·数据库·算法·ux
RFCEO15 小时前
学习前端编程:精准选中 HTML 元素的技巧与方法
前端·学习·css类选择器·兄弟元素选中·父子选中·关系选中·选择器选中
想睡好15 小时前
ref和reactive
前端·javascript·vue.js
霁月的小屋15 小时前
React 闭包陷阱深度解析
前端·javascript·react.js