服务器构建私有npm库(Docker + Verdaccio)

npm官网有时候因为网络原因包推不上去,那就简单构建个私有库
私有库不会被共享,且配置不需要太高1h2G就行
1.需要安装Docker,这个跳过了
2.生成配置文件

mkdir /home/verdaccio
cd /home/verdaccio
mkdir conf && mkdir storage && mkdir plugins
cd conf
touch htpasswd
vi config.yaml

3.在config.yaml中写入配置

# 存放软件所有软件包的目录
storage: ../storage
# 存放所有插件的目录
plugins: ../pluginsweb:# 网站Titletitle: Verdaccio# 禁用Gravatar头像# gravatar: false# 排序方式 asc|desc# sort_packages: asc# 是否启用暗黑模式# darkMode: true# logo地址# logo: http://somedomain/somelogo.png# favicon地址# favicon: http://somedomain/favicon.ico | /path/favicon.ico# i18n翻译配置
# i18n:
# 可用列表见:https://github.com/verdaccio/ui/tree/master/i18n/translations
#   web: en-USauth:htpasswd:file: ./htpasswd# 最大注册用户数,默认为 "+inf".# 可用通过设置为-1禁止注册# max_users: 1000# 上游npm库,这里可用设置为淘宝
uplinks:npmjs:url: https://registry.npmjs.org/packages:# 作用域包'@*/*':  # 允许所有人访问access: $all# 注册用户可访问publish: $authenticated# 注册用户可访问unpublish: $authenticatedproxy: npmjs'**':# 默认情况下所有用户 (包括未授权用户) 都可以查看和发布任意包# 你可以指定 用户名/分组名 (取决于你使用什么授权插件,默认的授权插件是内置的 htpasswd)# 访问权限有三个关键词: "$all", "$anonymous", "$authenticated"# $all 表示不限制,任何人可访问;# $anonymous 表示未注册用户可访问;# $authenticated 表示只有注册用户可访问access: $all# 允许所有注册用户发布/撤销已发布的软件包# (注意:默认情况下任何人都可以注册)publish: $authenticatedunpublish: $authenticated# 如果私有包服务不可用在本地,则会代理请求到'npmjs'proxy: npmjs# 您可以指定传入连接的HTTP /1.1服务器保持活动超时(以秒为单位)。
# 值为0会使http服务器的行为类似于8.0.0之前的Node.js版本,后者没有保持活动超时。
# 解决方法:通过给定的配置可以解决以下问题
server:keepAliveTimeout: 60
publish: true
# 中间件
middlewares:audit:enabled: true# 日志设置
logs: { type: stdout, format: pretty, level: http }# 开放远程访问,允许所有IP
listen:- 0.0.0.0:4873

4.安装运行 verdaccio

V_PATH=/home/verdaccio;
docker run -d -it --name verdaccio \-p 4873:4873 \-v $V_PATH/conf:/verdaccio/conf \-v $V_PATH/storage:/verdaccio/storage \-v $V_PATH/plugins:/verdaccio/plugins \verdaccio/verdaccio

容器安装完毕后就可以运行 http://服务器ip:4873 访问私有服

5.给软件包目录和用户记录文件目录授予权限
必须做,不然无法新增用户和上传软件包

chown 10001:65533 /home/verdaccio/conf/htpasswd
chown 10001:65533 /home/verdaccio/storage
chown 10001:65533 /home/verdaccio/plugins

6.npm 源替换为私有库源

npm config set registry http://服务器ip:4873

7.注册私有库用户,登录,查看,发包

npm adduser
npm login
npm who am i
npm publish

引用自原作者

8.docker可能没法拉镜像,要么科学上网,要么加几个源
阿里加速器

不过还是遇到个问题,重启容器,包没了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/51460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ajax请求成功但不执行success-function回调函数

目录 一、问题分析 二、处理问题 一、问题分析 在测试员工管理系统的登录和注册代码时,登录一切正常,就是注册成功后没有跳转页面,后面发现是success-function回调函数没有正常执行。原因主要是前端和后端交流的数据格式不一致,…

【C++BFS算法 二分查找】2812. 找出最安全路径

本文涉及知识点 CBFS算法 C二分查找 LeetCode2812. 找出最安全路径 给你一个下标从 0 开始、大小为 n x n 的二维矩阵 grid ,其中 (r, c) 表示: 如果 grid[r][c] 1 ,则表示一个存在小偷的单元格 如果 grid[r][c] 0 ,则表示一…

Windows配置AirSim过程(学习过程)

一、概述 因为需要在虚幻引擎当中使用AirSim,在Windows系统上进行操作,根据官方网站的操作过程,进行了配置,这里作为自己配置过程的记录。 二、具体过程 (一)系统版本 操作系统是Windows11,Ai…

go编译执行文件

1、如果进行单个文件编译go build xxx.go 2、批文件编译 不实际编译它,只输出它的编译过程: 1 go build -n 简单的编译过程分析: 上面的过程确认了两个事情: Runtime会永远随着用户代码一起编译在windows平台上编译出来了一…

昇思MindSpore 应用学习-RNN实现情感分类-CSDN

RNN实现情感分类 AI代码解析 概述 情感分类是自然语言处理中的经典任务,是典型的分类问题。本节使用MindSpore实现一个基于RNN网络的情感分类模型,实现如下的效果: 输入: This film is terrible 正确标签: Negative 预测标签: Negative输入…

HALCON如何创建本地函数

HALCON中有本地函数(.hdev)、外部函数(HDevelop函数文件.hdvp)和库函数(.hdpl) 本地函数(.hdev):创建后仅在当前程序文件中使用; 外部函数(HDevelop函数文件.hdvp):创建后可以在其他程序文件中复用,默认保存在…/ procedures/下…

vue实现滚动条下滑时隐藏导航栏,上滑时显示导航栏

效果展示 思路 监听滚动事件,记录上次的滚动距离,与最新滚动距离做对比,如果为正,说明滚动距离距顶值scrollTop变大,用户正在向下滚动页面,此时隐藏,反之则反,隐藏就是top值给他负导…

【Qt和OpenCV 概述】

Qt和OpenCV(Open Source Computer Vision Library)都是广泛用于计算机视觉应用的强大工具,而将它们结合使用,可以在Qt应用程序中实现复杂的视觉处理功能。Qt是跨平台的GUI库,而OpenCV则是专为计算机视觉任务设计的库。下面是Qt和OpenCV结合使用的一些概述: 为什么结合使…

为什么需要第三方支付

1.第三方支付平台提供一系列的应用接口程序,将多种银行卡支付方式整合到一个界面上,负责交易结算中与银行的对接,使网上购物更加快捷、便利。第三方支付整合了后端各大银行的不同支付接口,对外提供统一的接入平台,方便…

【C++语言】C++11新特性(1)

一、统一的列表初始化 1.1 {} 初始化 在C98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。比如: struct Point {int _x;int _y; };int main() {int array1[] { 1, 2, 3, 4, 5 };int array2[5] { 0 };Point p { 1, 2 };ret…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 项目排期安排(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

日常学习--调用第三方接口和提供第三方接口时的注意事项--20240728

1、调用第三方接口的注意事项 接口测试与验证: 对第三方接口进行充分的测试,包括功能测试、性能测试和安全测试,确保接口的稳定性和安全性。 验证接口的可用性,包括接口地址、请求方式、请求参数、响应格式等是否正确。 参数校…

C++使用MD5对字符串加密,获取文件的MD5值(附完整源码)

目录 1、为什么要使用MD5? 2、开源MD5类 3、获取字符串MD5值的MD5String接口封装 4、获取文件MD5值的MD5File接口封装 5、最后 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/125529931C…

OSPF动态路由协议实验

首先地址划分 一个骨干网段分成三个,r1,r2,r5三个环回网段 ,总共要四个网段 192.168.1.0/24 192.168.1.0/26---骨干网段 192.168.1.0/28 192.168.1.16/28 192.168.1.32/28 备用 192.168.1.64/28 192.168.1.64/26---r1环回 192.1…

easyui 点击单元格的时候,获取该行另外一个字段的值

在 EasyUI DataGrid 中,你可以通过绑定 ​​onClickCell​​ 事件来获取点击单元格所在行的其他字段的值。以下是具体的实现步骤和示例代码: 1. 初始化 DataGrid 首先,确保你已经初始化了一个 DataGrid,并填充了一些数据。 <!DOCTYPE html> <html> <head…

【Vulnhub系列】Vulnhub_DC-1靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub_DC-1靶场渗透 原文转载已经过授权 原文链接&#xff1a;Lusen的小窝 - 学无止尽&#xff0c;不进则退 (lusensec.github.io) 一、环境准备 1、在百度网盘中下载DC-1靶场。DC-1靶场受virtual box 的影响&#xff0c;在VM中直接打开是扫描不到IP 的…

C++第五次作业

题目&#xff1a; 自实现myFind()函数&#xff0c; 在某个字符串str中查找子字符串str_key的位置&#xff0c;&#xff0c;如果找到&#xff0c;返回子字符串所出现的第一个位置的下标&#xff0c;如果没找到&#xff0c;返回-1。 例如 abcdefgabcdefg (str) def (str_key) 3 q…

西方2000年文明史

西方2000年文明史 PoliticsEconomyCultureScienceMathematicsPhysicsChemistryBiologyMedicineEngineeringArtMusicComputer Science / Information Technology The contributions of Western civilization over the past 2000 years span a wide range of fields, from politi…

flutter自定义icon

从iconfont-阿里巴巴矢量图标库下载自己的选好的图标库 复制ttf文件到 fonts目录下&#xff0c;如&#xff1a;D:\dev\Android\apps\ichat\fonts\my_iconfont.ttf 在pubspec.yaml里面配置 flutter&#xff1a; fonts:- family: my_iconfonts:- asset: fonts/my_icon_font.t…