verdaccio-npm私服搭建教程

 
npm私库方式:
是一个部署简易的可以实现github仓储私有化的npm组件

 

 

sinopia虽然历史悠久,但是已经停止维护
 
 
内网,下载时候方便
npm私服搭建的必要性
1.如果公司处于隐私保护的需要,不想讲自己封的包推到npm社区,但又急需要一套完整的包管理工具来管理越来越多的组件,模块,项目。对于前端,最熟悉的莫过于npm,bower等,但是bower的市场明显没有npm强大的,npm是前端包管理的不二选择 ~
2.我们公司项目里直接依赖或间接依赖的包可能会有上千个,下过node库的人都懂,从npmjs上下载有多慢,所以大家会用cnpm从淘宝那下,但有比淘宝更快的方法是从局域网的私服下。
3.当我们搭好了这套私服管理工具之后有什么优势呢?
  • 私有包托管在我们的私服上,不对外。
  • 项目中使用的所有包可以缓存在我们的私服上,然后大家下包的时候走私服,不用走npmjs了。速度快上七八倍不在话下。
  • 对于下载和发布npm包都有了相应的权限管理。
 
 
搭建手册:
安装nodejs,npm
2.verdaccio
安装verdaccio
npm install -g verdaccio --unsafe-perm
 
启动verdaccio
verdaccio
修改配置:
修改npm代理
npm set registry http://ip:8473
查看代理的配置
npm config list
 
查看当前用户
npm who am i
注册用户
npm adduser 依次添加用户
修改配置:
/Users/emperor/.config/verdaccio
配置文件原文:
 
修改上游npm用于下载依赖
 
verdaccio -c config.yaml
 
常用配置详解:
  • 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
修改了配置文件后,运行命令 
$ verdaccio -c config.yml
 
nrm安装管理代理
npm install -g nrm
 
nrm use taobao
nrm del <registry>
nrm test npm    
nrm current
 
 
使用pm2代理verdaccio 这样可以使得进程一直都在而不会被随意杀掉
同时自动做到负载均衡
 
安装pm2
npm install pm2 -g
 
  • 如图中所示这个verdaccio 的启动文件的路径就是D:\Node\node_global\node_modules\verdaccio\bin\verdaccio
  • 然后
pm2 start C:\Users\Administrator\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio
同理:如果你的pm2的启动路径和verdaccio的启动文件的路径在一个目录下可直接 pm2 start verdaccio
启动成功如图:

 

 

停止
pm2 stop which D:\nodejs\node_global\node_modules\verdaccio
查看日志
pm2 show D:\nodejs\node_global\node_modules\verdaccio
 
发布模块
npm publish
删除模块
npm unpublish --force yourPackage

 

 

posted @ 2021-11-25 11:19  攻玉  阅读(403)  评论(0)    收藏  举报