npm私库方式:
1.sinopia
是一个部署简易的可以实现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 #在所有网卡监听
代理
修改了配置文件后,运行命令
$ verdaccio -c config.yml
nrm安装管理代理
npm install -g nrm
nrm use taobao
nrm add registry http://registry.npm.frp.trmap.cn/
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