为什么要我们自己搭建一个npm私服?
- 下载速度更快
- 便于管理,可以分配权限
- 可以修改第三方包,放入我们得私服
- 可以只在公司局域网中用,不公开
步骤:
1.服务器准备工作
-
你得有个服务器(我这用得是阿里云)
-
安装node,我这边是安装得node版本14.17.4,长期维护得一个版本。
-
安装verdaccio 请安装最新版本吧(要求一般node版本12以上)
npm i -g verdaccio
2.verdaccio
- verdaccio 启动
启动前先去配置文件配置一下端口
C:\Users\Administrator\AppData\Roaming\verdaccio\config.yaml 打开最后一行添加listen: 0.0.0.0:4873
注意:我这里添加之后,在浏览器上访问http://xx.xx.xx.xx:4873/ 无法访问,这是因为没有配置4873端口,在阿里云得安全组规则里新增下端口
成功看到页面
- verdaccio得配置文件得一些参数
storge : 包存成得位置
plugins:插件存放得位置
web:title 页面抬头得设置
uplinks:指定npm源,(如果找不到,会从npm官网上去拉)
packages:包来源得配置 **统一得处理 @*/*特别处理(权限配置)
下面得逻辑就是 heyi开头得包都走私有仓库,proxy代理
3.pm2守护进程
- npm install -g pm2
- pm2 start verdaccio
注意: 有些人这里会失败
解决:可以pm2 start C:\Users\Administrator\AppData\Roaming\npm\node_modules\verdaccio\bin\verdaccio
后面改成verdaccio具体执行得文件路径(在全局npm,node_modules下,我得默认是c盘)页面也能打开了
4.权限配置——发布拉取
config.yaml——packages
上面两个都是特别处理,**统一得逻辑
$all: 所有用户
$authenticated: 注册用户
access:拉取
publish:发布
unpublish:删除
packages:
'local-*':
access: admin teamA teamB teamC
publish: admin teamA teamB teamC
unpublish: admin teamA
'@*/*':
access: $all
publish: $authenticated
unpublish: $authenticated
'**':
access: $all
publish: admin yangjie1
unpublish: admin yangjie1
配置好文件之后需要中止verdaccio pm2 stop … 然后再启动 ,之前得yangjie账号就无法发布了;
注册我们对应权限得账户 发布
注意切换源 注册测试
npm addUser
npm login
npm publish