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服务
学而不思则罔,思而不学则殆!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2023-06-03 Excel、Word等前端文件下载
2023-06-03 AntDesign中a-menu的使用案例
2023-06-03 xgplayer的使用案例
2023-06-03 AntDesign中a-tree使用案例
2023-06-03 Vue中omit的作用