Linux系统通过Verdaccio搭建Npm私服
Linux系统使用Verdaccio搭建NPM私服
对积累并封装一套公共组件库或自定义脚手架,工具极大加速我们的业务开发进程
但是对于代码安全和隐私的考虑,不能将这些内容上传到公开的npm仓库中
可以利用Verdaccio工具在服务器上搭建一个Npm私服,更好的管理内部共享的代码
Verdaccio简介
Verdaccio 开源、轻量级、易于配置的npm私服解决方案
基于Node.js和Express.js构建,提供和官方npm仓库相似的使用体验
通过Verdaccio可以轻松在本地或远端搭建一个私有的npm仓库,实现包的快速访问、版本控制、权限管理等功能
Verdaccio存在一个内置的数据库来存放所有的npm包
提供默认的鉴权机制:htppasswd
Verdaccio通过htpasswd文件存放所有npm用户,鉴权、添加/删除的时候通过对文件的读写来实现
Verdaccio提供上行链路功能,安装Verdaccio仓库中不存在的包时,可配置向上游仓库下载
参考
- https://juejin.cn/post/7367201514039083018?searchId=20240602151427B3AA2F4E9C76051BE4E1#heading-0
- https://www.pjxi.com/post/78759.html
- rollup开发npm包: https://juejin.cn/post/7264044879209529381?searchId=202406021459536187C39979F2DF1E9773
- ★: https://juejin.cn/post/7367201514039083018?searchId=20240602151427B3AA2F4E9C76051BE4E1#heading-0
- https://blog.csdn.net/weixin_60197334/article/details/136735079
vi文件搜索 /搜索内置
yum install tree
systemctl status firewalld -- 检查防火墙状态是否开启
systemctl enable firewalld -- 开启防火墙
firewall-cmd --zon=public --add-port=80/tcp --permanent -- 开发端口号
// --zone表示处于哪个防火墙区域,--add-port表示增加一个端口规则,80/tcp表示开放的端口为80号端口,--permanent表示开放端口的规则永久生效。
firewall-cmd --reload -- 使开发端口的规则生效
开发redis端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
开发数据库端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
解决Linux端口占用问题:https://www.jb51.net/server/31902282m.htm
- 案例
867 netstat -anp | grep 888
868 netstat -anp | grep 4873
869 lsof -i :4873
870 yum install lsof
871 lsof -i :4873
872 kill -9 4805
873 lsof -i :4873
构建私服的好处
- 可以离线使用
- 提高包的安全性,使用私有npm仓库可以更好的管理包,避免在使用公共的npm包的时候出现漏洞
- 提高包的下载速度,使用私有npm仓库,可以将经常使用的npm包缓存到本地,从而提高包的下载速度,减少包的下载事件
有利于团队内部开发和持续集成、部署等场景
Verdaccio的安装和使用
两种部署方式
第一种Docker部署方式
1. 目录结构
[root@lavm-h7edovikqi opt]# ll
total 12
drwxr-xr-x 3 root root 4096 May 29 14:37 compose_nginx
drwx--x--x 4 root root 4096 May 29 14:33 containerd
drwxr-xr-x 5 root root 4096 Jun 2 23:54 verdaccio
[root@lavm-h7edovikqi opt]# tree verdaccio
verdaccio
├── config
│ └── config.yaml
├── docker-compose.yml
├── plugins
└── storage
/config/config.yaml
# path to a directory with all packages
storage: ./storage
# path to a directory with plugins to include
plugins: ./plugins
# https://verdaccio.org/docs/webui
web:
title: Verdaccio
auth:
htpasswd:
file: ./htpasswd
uplinks:
npmjs:
url: https://registry.npmjs.org/
packages:
'@*/*':
# scoped packages
access: $all
publish: $authenticated
unpublish: $authenticated
proxy: npmjs
'**':
access: $all
# allow all known users to publish/publish packages
# (anyone can register by default, remember?)
publish: $authenticated
unpublish: $authenticated
# if package is not available locally, proxy requests to 'npmjs' registry
proxy: npmjs
server:
keepAliveTimeout: 60
listen: 0.0.0.0:4873
middlewares:
audit:
enabled: true
log: { type: stdout, format: pretty, level: http }
docker-compose.yml
version: "3"
services:
verdaccio:
image: verdaccio/verdaccio
container_name: "verdaccio"
networks:
- node-network
environment:
- VERDACCIO_PORT=4873
ports:
- "4873:4873"
volumes:
- "./storage:/verdaccio/storage"
- "./config:/verdaccio/conf"
- "./plugins:/verdaccio/plugins"
networks:
node-network:
driver: bridge
执行 docker-compose -d up 开启verdaccio服务
学而不思则罔,思而不学则殆!