作者:devops_锋
前言:
为游戏公司客户端搭建npm仓库,统一对包进行管理
verdaccio简介
一个轻量级的Node.js私有代理注册中心,是一个简单的、零配置要求的本地私有npm注册表。无需整个数据库即可开始使用,开箱即用,并且能代理其他注册表(例如npmjs.org)还引入了缓存下载的模块
操作步骤
1. 规划目录
root@debian10:/data/verdaccio/volume# tree
.
├── conf
│ ├── config.yaml。主配置文件
│ └── htpasswd。 身份认证
├── plugins。 插件目录
└── storage. 数据目录
2. 关闭防火墙
ufw disable
iptable -F
3. 准备配置文件config.yaml
storage: /verdaccio/storage
plugins: /verdaccio/plugins
auth:
htpasswd:
file: /verdaccio/conf/htpasswd
security:
api:
jwt:
sign:
expiresIn: 60d
notBefore: 1
web:
sign:
expiresIn: 7d
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
'@*/*':
# scoped packages
access: $all
publish: $all
proxy: npmjs
'**':
access: $all
publish: $all
proxy: npmjs
unpublish: $all
middlewares:
audit:
enabled: true
logs:
- { type: stdout, format: pretty, level: trace }
listen:
- 0.0.0.0:4873
max_body_size: 600mb
4. 准备密码文件htpasswd
# 网上找个自动生成htpasswd
test:$apr1$PJ2uTbyC$RnRCONXbNONRYcB3dH42C/
5. 拉取镜像并创建容器
docker pull verdaccio/verdaccio
docker run --name verdaccio -itd \
-v /data/verdaccio/volume:/verdaccio \
-p 4873:4873 \
verdaccio/verdaccio
6. 进入容器完成基本配置
1. 进来
docker exec -it verdaccio /bin/sh
2. 设置默认仓库源
npm config set registry http://192.168.15.19:4873
3. 添加用户
npm adduser --registry http://192.168.15.19:4873/
4. 登陆账户
npm login
输入更改注册的用户即可
5. 登陆web界面登陆可进入仓库
7. 弄一个测试包做发布测试以及本地拉取
npm publish --registry http://localhost:4873/
8. 本地拉取npm仓库的包
npm install 包名
附录
1. 禁止本地创建用户
auth:
htpasswd:
file: /verdaccio/conf/htpasswd
max_users: -1
# 将最大用户数设为-1,这样就没办法自由注册了
2.认证权限问题
(verdiaco只支持给已认证的用户拿包)
- $authenticated 认证的用户,即已经登陆了的用户
- $anoymous 匿名用户,未登录用户
- $all 所有用户,包含以上两种
使用内网搭建的npm仓库对用户认证上没太大的需求,客户端只是用来对包进行统一管理和拉取,用匿名即可,或者后期需要用户权限可以找我一起弄就可。
3. 使用容器卷不逊于修改配置文件问题
chown 10001:65533 /data/verdaccio/volume/ -R
4.本地拉取npm仓库包失败
原因1:package.json里的依赖包问题
原因2:npm版本问题,更新,重下。。
5.adduer失败
原因:本地与远程npm未做绑定(且不能用127.0.0.1)因为用的是容器,得使用宿主机的ip来绑定
npm config set --registry http://宿主机ip:4873