当前位置: 首页 > 工具软件 > Verdaccio > 使用案例 >

使用verdaccio搭建私有npm仓库

谭嘉歆
2023-12-01

verdacico官网
https://verdaccio.org/zh-CN/docs/setup-npm

verdacico安装前准备
确保电脑已安装node.js
步骤一:输入node -v 验证
步骤二:输入npm -v 验证

外网安装verdacico(系统使用Window)
步骤一:通过npm安装verdacico
npm install -g verdaccio

verdaccio -v

备注:若报错参考安装解决问题一
步骤二:启动verdacico
verdacico

浏览器输入http://localhost:4873/ (默认的地址,verdaccio)

安装完成!
步骤三:修改npm代理仓库(建议用nrm)
根据需要修改npm仓库
npm set registry http://ip:8473

这里我用的是本机ip,ip根据服务器的ip自行修改
备注:个人认为根据需求变动,若是你要在外网下载npm包会导致下载失效
步骤四:查看代理的仓库配置(根据需要执行)
npm config list

这里我们可以看到我的淘宝镜像仓库变成了本地仓库,通过步骤三。
步骤五:添加用户
npm adduser --registry http://localhost:4873/

输入用户名,密码,邮箱,用户添加完毕
步骤六:查看当前用户
npm who am i --registry http://localhost:4873/

弹出创建用户名创建完成
步骤七:verdacico修改配置
找到本机安装verdacico位置
npm root -g

storage代表上传文件存储的地址,根据需要自行配置
末尾添加listen: 0.0.0.0:4873(这里外网如果要访问需要添加)
备注:将publish: allow_offline: true
防止出现http <-- 503, user: xx, req: ‘PUT /helloworld’, error: one of the uplinks is down, refuse to publish 相关报错
步骤八:安装nrm并管理nrm仓库源
cnpm install -g nrm

安装时将npm数据源切换到淘宝的镜像仓库
nrm add localnpm http://localhost:4873

将我本地ip:6873的私有仓库添加至nrm中

使用我添加私有仓库
步骤九:npm初始化,获取可上传的包
npm init

步骤十:登录verdaccio
npm login

输入在verdaccio注册用户,登入成功
步骤十一:发布verdaccio包
npm publish

推送完成,项目发布成功,登录网址成功,如下图

步骤十二:下载verdaccio包
onetest是步骤十一发布的包
npm install onetest --save

下载上传的包会多一个node_modules,文件里有你上传的包onetest就是我们上传的,我们只上传了一个,如果还想继续上传需要修改package.json的name,如果有新版本还可以再次修改上传。

步骤十三:删除verdacci包
npm unpublish --force onetest

包删除完成
备注:如果想更新可以选择删除重新发布或者修改package.json版本号
步骤十四:安装pm2持续运行verdaccio
npm install pm2 -g

备注:将npm仓库源切换至淘宝的数据源,外网用私网数据源啥都下不了
pm2 start verdaccio

这个pm2启动为stop的问题我还需要解决一下,这个坑太多了
pm2 start C:\Users\zhangmengqi\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio

pm2问题解决,现在后台可以持续运行verdaccio,现在我可以把它关掉了
步骤十五:实际中运用verdaccio管理包
随机进入一个项目node_modules里
进入文件内,当前文件内要有package.json

npm publish

现在发现这个包并不是我想上传的
就执行步骤十三
npm unpublish --force packageName

该条命令任何在任何位置执行均可,这里我删除的是bytes

主页上的文件没有了,表示删除完成!
备注:文件上传过大时修改配置文件(具体查看步骤四找配置文件)

上传失败!

修改配置文件

再次推送

完成!
内网安装verdacico(系统使用Linux)

内网机器上执行:
npm install --cache ./npm-cache --optional --cache-min 99999999999 --shrinkwrap false jquery 或者 npm install --cache ./npm-cache --optional --cache-min 99999999999 --shrinkwrap false
步骤和外网一样
(由于工资太少就不买阿里云的服务器了,本机搭建虚拟机装系统时间太久了,没任何意思,步骤都一样)
verdaccio常用配置详解:
storage: 仓库保存的地址,publish时仓库保存的地址。
auth: htpasswd file:账号密码的文件地址,初始化时不存在,可指定需要手工创建。
max_users:默认1000,为允许用户注册的数量。
为-1时,不允许用户通过npm adduser注册。
但是,当为-1时,可以通过直接编写htpasswd file内容的方式添加用户。
语法:用户名:{SHA}哈希加密的字符=:autocreated 时间
加密算法:SHA1哈稀之后再转换成 Base64 输出就好
uplinks: 配置上游的npm服务器,主要用于请求的仓库不存在时到上游服务器去拉取。
packages: 配置模块。access访问下载权限,publish包的发布权限。
格式如下:
scope:
权限:操作
scope:两种模式
一种是 @/ 表示某下属的某项目
另一种是 * 匹配项目名称(名称在package.json中有定义)
权限:
l access: 表示哪一类用户可以对匹配的项目进行安装(install)
l publish: 表示哪一类用户可以对匹配的项目进行发布(publish)
l proxy: 如其名,这里的值是对应于 uplinks 的名称,如果本地不存在,允许去对应的uplinks去取。
操作:
l $all 表示所有人(已注册、未注册)都可以执行对应的操作
l $authenticated 表示只有通过验证的人(已注册)可以执行对应操作,注意,任何人都可以去注册账户。
l $anonymous 表示只有匿名者可以进行对应操作(通常无用)
l 或者也可以指定对应于之前我们配置的用户表 htpasswd 中的一个或多个用户,这样就明确地指定哪些用户可以执行匹配的操作
听端口和主机名。
localhost:4873      #默认
0.0.0.0:4873       #在所有网卡监听
代理
#http_proxy: http://something.local/ #http代理
#https_proxy: https://something.local/ #https代理
#no_proxy: localhost,127.0.0.1 #不适用代理的iP

(安装解决问题一)将npm设置为淘宝镜像
执行npm install -g verdaccio 命令出现一下错误时:

解决方法是设置淘宝镜像
1.通过cnpm使用淘宝镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org
2.将npm设置为淘宝镜像:
npm config set registry https://registry.npm.taobao.org
3. 查看npm镜像设置:
npm config get registry
4.查看cnpm镜像设置:
cnpm config get registry

 类似资料: