从零搭建私有 npm 仓库Verdaccio

一次完整的实战记录:部署 Verdaccio

前言

在实际工作中,我们经常需要开发一些公共组件或工具函数,在多个项目间共享。如果每次都复制粘贴代码,维护起来会非常痛苦。这时,搭建一个私有 npm 仓库就显得尤为重要。

本文记录了我从零开始搭建私有 npm 仓库、开发 Vue3 组件库并发布的全过程,包括遇到的坑和解决方案。希望能帮助到同样需要搭建私有仓库的开发者。

一、环境准备

1.1 硬件要求

  • 一台云服务器(本文使用阿里云 ECS,CentOS 系统)

  • 本地开发环境(Windows/Mac/Linux)

1.2 软件要求

  • Node.js 18+

  • pnpm 8+(推荐使用 pnpm 管理 Monorepo)

  • Docker(用于部署 Verdaccio)

二、部署 Verdaccio 私有仓库

2.1 阿里云安全组设置

在开始之前,需要确保你的阿里云服务器允许外部访问 4873 端口。

  1. 登录阿里云控制台,找到你的ECS实例。

  2. 进入"安全组" -> "配置规则"。

  3. 添加入方向规则:

    • 端口范围4873/4873

    • 授权对象0.0.0.0/0(如果需要更安全,可以限制为你的办公IP)

    • 协议:TCP

2.2 安装 Docker

整个过程不详细说明,自己去看网络上的教程

2.3 拉取 Verdaccio 镜像

复制代码
sudo docker pull verdaccio/verdaccio

2.4 创建数据挂载目录

为了让你的npm包和配置在容器更新或重启后不丢失,我们需要在服务器上创建专门的目录。

  1. 点击宝塔面板左侧的 文件

  2. 进入你希望的目录,例如 /www/,然后新建一个文件夹,命名为 verdaccio

  3. 进入 /www/verdaccio/ 目录,再新建两个子文件夹:confstorage

  4. 进入 conf 文件夹,新建一个文件,命名为 config.yaml

编辑刚才新建的 /www/verdaccio/conf/config.yaml 文件,将以下内容复制进去并保存。

这个配置设置了存储路径、用户认证、上游源(淘宝镜像)和访问权限

bash 复制代码
# 包存储路径,对应我们挂载的storage目录
storage: /verdaccio/storage

# 用户认证,用户信息会保存在htpasswd文件中
auth:
  htpasswd:
    file: /verdaccio/conf/htpasswd

# 公共包去哪里下载(使用淘宝镜像加速)
uplinks:
  npmjs:
    url: https://registry.npmmirror.com/

# 包访问权限配置
packages:
  '@*/*':
    access: $all
    publish: $authenticated
    proxy: npmjs
  '**':
    access: $all
    publish: $authenticated
    proxy: npmjs

# 启动后的Web界面
web:
  title: locfly私有npm仓库
  enable: true

# 日志输出
logs:
  - { type: stdout, format: pretty, level: http }

# 监听所有地址,允许外部访问
listen: 0.0.0.0:4873

2.5. 创建并运行容器

  1. 回到宝塔面板的 Docker 页面,点击本地镜像,选择 -> 创建容器

  2. 按以下信息进行配置:

    • 镜像 :选择我们刚刚拉取的 verdaccio/verdaccio

    • 容器名 :填写 verdaccio(随便填自己的)

    • 端口映射

      • 容器端口:4873

      • 服务器端口:4873(确保与阿里云安全组开放的端口一致)

    • 目录挂载:这是关键步骤,将服务器的目录映射到容器内部。下面的服务器目录是刚才创建的挂载目录,根据自己情况选择,容器目录不能改(其实这里跟前两天配置jenkins是一样的)

      • 服务器目录/www/verdaccio/conf ------ 容器目录/verdaccio/conf

      • 服务器目录/www/verdaccio/storage ------ 容器目录/verdaccio/storage

      • 注意:如果挂载时提示权限错误,进入到目录verdaccio,右键权限,把读写权限打开

2.6. 验证部署

现在,打开你的浏览器,访问 http://你的服务器公网IP:4873。如果能看到 Verdaccio 的页面,就说明部署成功啦!

三、常见问题与解决方案

问题1:添加用户时 500 错误

bash 复制代码
npm error code E500
npm error 500 Internal Server Error

原因: 目录权限问题,Verdaccio 容器没有写入权限。

解决方案:找到Verdaccio右键,然后选择权限,把读写权限打开或者自己找相关的命令去开权限

相关推荐
Hi~晴天大圣1 小时前
npm使用介绍
前端·npm·node.js
888CC++1 小时前
如何在 C 语言中进行程序调试?
前端·javascript·算法
喵个咪2 小时前
基于 Taro 的 Headless CMS 多端前端架构:技术解析与二次开发导引
前端·react.js·taro
狂炫冰美式2 小时前
你还在古法PPT吗,试试HTML呢?免费编辑导出工具给 xdm 放这了
前端·后端·github
万少3 小时前
未来组织的分水岭不是员工数量,而是人才密度
前端·后端·面试
任磊abc3 小时前
nextjs16配置eslint+prettier
前端·eslint·nextjs·prettier
x***r1513 小时前
Another-Redis-Desktop-Manager.1.3.7安装步骤详解(附Redis可视化连接与Key管理教程)
前端·bootstrap·html
Captaincc3 小时前
你真的知道自己把 AI 用在了哪里吗?这是 Vibe Usage 想回答的问题
前端·vibecoding
道友可好3 小时前
OpenSpec:轻到起飞的 AI 编程规范层
前端·人工智能·后端
kyriewen4 小时前
我招了一个“Prompt工程师”来写前端,结果项目差点崩了
前端·javascript·面试