使用verdaccio搭建npm私有库 pm2守护进程 nrm管理npm源
文章目录
介绍
团队开发用到npm,但公司要求使用的私有npm库方便管理,查找相关资料后决定使用verdaccio搭建npm私有库。话不多说直接开始吧。
参考文献:
verdaccio-npm
pm2-npm
nrm – NPM registry manager
实现思路
- 搭建verdaccio私有库
- 使用pm2管理进程,避免服务挂掉的情况
- 发布安装npm包
- 使用nrm管理\切换npm registry
安装步骤
安装verdaccio
- verdaccioi是 sinopia 开源框架的一个fork,sinopia已经没有人维护了所以建议直接使用verdaccio。使用npm全局安装即可。
npm install verdaccio -g
- 测试运行verdaccio,测试是否安装成功。
成功示例:
打开http://localhost:4873出现如图所示界面则表示安装成功:
注意
- 默认启动服务需要占用4873端口,若启动verdaccio服务失败请检查该端口是否被占用,或者手动修改对应的配置文件。一般路径为
C:\Users\用户\AppData\Roaming\verdaccio\config.yaml
。修改其中的端口号。 - config.yaml配置文件详解
# #号后面是注释 # 所有包的缓存目录这里建议修改放在其他盘不要放在系统盘 storage: ./storage # 插件目录 plugins: ./plugins #开启web 服务,能够通过web 访问 web: # WebUI is enabled as default, if you want disable it, just uncomment this line #enable: false title: Verdaccio #验证信息 auth: htpasswd: # 用户信息存储目录 file: ./htpasswd # Maximum amount of users allowed to register, defaults to "+inf". # You can set this to -1 to disable registration. #max_users: 1000 # a list of other known repositories we can talk to #公有仓库配置 uplinks: npmjs: url: https://registry.npmjs.org/ packages: '@*/*': # scoped packages access: $all publish: $authenticated #代理 表示没有的仓库会去这个npmjs 里面去找 , #npmjs 又指向 https://registry.npmjs.org/ ,就是上面的 uplinks 配置 proxy: npmjs '**': # 三种身份,所有人,匿名用户,认证(登陆)用户 # "$all", "$anonymous", "$authenticated" #是否可访问所需要的权限 access: $all #发布package 的权限 publish: $authenticated # 如果package 不存在,就向代理的上游服务发起请求 proxy: npmjs # To use `npm audit` uncomment the following section middlewares: audit: enabled: true # 监听的端口 ,重点, 不配置这个,只能本机能访问 listen: 0.0.0.0:4873 # log settings logs: - {type: stdout, format: pretty, level: http} #- {type: file, path: verdaccio.log, level: info}
着重配置这几点
- storage:#所有包的缓存目录 建议修改如:
D:\npmPackes\storage
- listen: 0.0.0.0:4873 #建议追加该配置,不配置只能本地访问,若只是本地访问可不用 。
- 访问控制三种身份:所有人("$all"),匿名用户("$anonymous"),认证(登陆)用户("$authenticated") 。一般发布者都设置成 认证/登陆用户("$authenticated")。安装者设置成所有人("$all")。
- proxy:代理 表示没有的包verdaccio库会去这个npmjs (即配置中
https://registry.npmjs.org/
)里面去找.
verdaccio常用问题集锦
转至目录
使用pm2管理进程
在确定verdaccio安装成功的情况下,使用pm2能更好的管理verdaccio服务(需要node.js环境
),避免服务被错误关闭,进程被中断的情况。
pm2简介
pm2是node进程管理工具,可以用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等,而且使用非常简单。关于pm2的内容这里不做过多介绍,大家可以去官网或者其他博客查看了解,后文会附上pm2的常用命令。
全局安装pm2
npm install pm2 -g
使用pm2启动verdaccio
作者曾经卡在这里很久,也通过国内外找资料,最后解决了。网上说的pm2 start verdaccio
和 pm2 start “which verdaccio”
都不行。最后找到verdaccio安装目录的bin文件夹中的verdaccio启动文件最后启动成功
-
首先找到verdaccio的安装目录,就是npm 安装全局包的路径。
我通过配置更改了全局包的路径改为了D:\Node\node_global\node_modules
(建议修改nodejs全局包下载存放的路径节省c盘空间,并配置对应环境变量参考博客),默认全局包在C:\Users\Administrator\AppData\Roaming\npm\node_modules
找到verdaccio文件夹并打开bin文件夹如图:
如图中所示这个verdaccio 的启动文件的路径就是D:\Node\node_global\node_modules\verdaccio\bin\verdaccio
-
然后
pm2 start D:\Node\node_global\node_modules\verdaccio\bin\verdaccio
同理:如果你的pm2的启动路径和verdaccio的启动文件的路径在一个目录下可直接pm2 start verdaccio
启动成功如图:
status 为“online”即为成功,然后打开对应地址http://localhost:4873 或者你配置的端口 -
pm2 show verdaccio 查看该进程详细信息
-
pm2 logs 查看错误日志
-
pm2… …pm2常用命令文末附上
使用nrm管理或者切换npm仓库源
nrm – NPM registry manager, nrm是专门用来管理和快速切换私人配置的registry。当使用官方npm源安装各种包比较慢的时候,建议修改npm源地址。公司有属于自己的是有npm仓库建议使用nrm.
-
nrm ls
查看nrm 配置 -
nrm current
查看当前使用的是哪个源 -
nrm add **
添加npm源,如http://XXX.XXX.XX:4873\ 就可以很方便的切换npm的私有库和共有库了nrm add test http://registry.test.org
-
nrm use **
切换源 -
nrm del **
删除nrm配置
附:pm2常用命令
$ npm install pm2 -g # 命令行安装 pm2
$ pm2 start app.js -i 4 # 后台运行pm2,启动4个app.js
# 也可以把'max' 参数传递给 start
# 正确的进程数目依赖于Cpu的核心数目
$ pm2 start app.js --name my-api # 命名进程
$ pm2 list # 显示所有进程状态
$ pm2 monit # 监视所有进程
$ pm2 logs # 显示所有进程日志
$ pm2 stop all # 停止所有进程
$ pm2 restart all # 重启所有进程
$ pm2 reload all # 0 秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0 # 停止指定的进程
$ pm2 restart 0 # 重启指定的进程
$ pm2 startup # 产生 init 脚本 保持进程活着
$ pm2 web # 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0 # 杀死指定的进程
$ pm2 delete all # 杀死全部进程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话