文章目录
介绍
团队开发用到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用户AppDataRoamingverdaccioconfig.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: pmPackesstorage
- 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 ode_global ode_modules
(建议修改nodejs全局包下载存放的路径节省c盘空间,并配置对应环境变量参考博客),默认全局包在C:UsersAdministratorAppDataRoaming pm ode_modules
找到verdaccio文件夹并打开bin文件夹如图:
如图中所示这个verdaccio 的启动文件的路径就是D:Node ode_global ode_modulesverdaccioinverdaccio
-
然后
pm2 start D:Node ode_global ode_modulesverdaccioinverdaccio
同理:如果你的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 # 杀死全部进程