搭建 npm 私服

news/2024/12/26 19:50:22/文章来源:https://www.cnblogs.com/veinyin/p/18567259

背景

准备搭建一个自己的网站,放些平时练手的 demo,如果是不同项目,想要保持风格一致,或是要用到一些工具方法,就要在每个项目复制一份,不是很好维护,于是就想要搭建一个自己的 npm 私服

安装 verdaccio

1 安装

verdaccio,这是一个开源的私有 npm 注册中心,要注意的是,现在官网正在推行的版本是 6.x,node 版本需要 >=18,历史最新版本是 5.33.0,node 版本需要 >= 14,据官方说明 5.x 之后将不再更新

可以根据自己的现状选择要使用的版本,因为我的服务器 node 版本是 16,更新到 18之后有一系列依赖版本问题,因此使用 5.33.0

npm install -g verdaccio

安装完成之后在终端输入 verdaccio,有以下输出表示安装成功

 

2 配置

可以看到 config 文件的地址,在终端执行 vim /root/verdaccio/config.yaml,编辑配置文件,添加 listen: 0.0.0.0:4873

 

在云服务器的管理台-安全组-入方向,将 4873 端口放开,再到浏览器访问 http://服务器ip:4873,可以看到以下内容就成功了

 

3 用 systemctl 管理服务 

执行 vim /etc/systemd/system/verdaccio.service 

在 verdaccio.service 文件里加入以下内容并保存

[Unit]
Description=Verdaccio lightweight npm proxy registry[Service]
Type=simple
Restart=on-failure
#User=root
ExecStart=/root/.nvm/versions/node/v16.20.2/bin/verdaccio --config /root/verdaccio/config.yaml

[Install]
WantedBy=multi-user.target

执行 sudo systemctl daemon-reload 加载配置文件

执行 systemctl start verdaccio.service 启动服务

补充:

执行 systemctl restart verdaccio.service 重启服务

执行 systemctl stop verdaccio.service 停止服务

执行 systemctl status verdaccio.service 查看运行状态

执行 journalctl -u verdaccio.service 查看服务启动时的日志

再次在浏览器中访问,如果可以正常看到页面,就配置成功了

4 配置访问域名

给域名解析添加一条 A 记录

在服务器上添加 nginx 反向代理配置

我的配置文件统一管理在 /etc/nginx/vhost 文件夹下,所以执行  vim /etc/nginx/vhost/verdaccio.conf 添加以下内容

 server {
listen
80;server_name registry.npm.xxx.xxx;location / {proxy_pass http://127.0.0.1:4873/; proxy_set_header Host $host;} }

添加完成后,执行 nginx -s reload,重新加载 nginx 配置文件,让上述配置生效

5 支持 https 访问

执行 sudo  certbot --nginx,为 registry.npm.xxx.xxx生成证书,支持 https 访问

实际访问后发现控制台报错,请求资源的地址还是 ip,可以 vim /root/verdaccio/config.yaml,编辑配置文件如下

再次访问发现还是不对,请求资源时还是用的 http 协议而不是 https,资源加载失败,页面空白

vim /etc/systemd/system/verdaccio.service 新增环境变量,锁定资源请求地址

[Service]
Type=simple
Restart=on-failure
#User=root
ExecStart=/root/.nvm/versions/node/v16.20.2/bin/verdaccio --config /root/verdaccio/config.yaml
Environment="VERDACCIO_PUBLIC_URL=https://registry.npm.xxx.xxx"

执行  systemctl daemon-reload,再执行 systemctl restart verdaccio.service,重启服务,页面可以正常访问

 

 

发布包

根据上面访问的页面上的提示

1 创建用户

在终端执行 npm adduser --registry https://registry.npm.xxx.xxx(在使用侧就可以,不用在服务器执行)

按照提示输入用户名、密码、邮箱,密码输入时不显示,输入完成后回车即可

2 登录验证

用刚刚的用户名密码在页面登录,如下图就是创建成功

3 发布

准备一个用来发布的包,把本地的 npm 仓库地址换成自己的私服地址,在包的 package 那级打开终端,执行 npm publish 即可

发布成功之后刷新页面可以看到刚刚上传的包

 

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

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

相关文章

C# WPF PrintDialog 打印(2)

前面https://www.cnblogs.com/yinyu5/p/18633910使用PrintVisual方法只打印了可见部分的元素,所以这里改为使用PrintDocument方法来进行打印。 需要引用System.Printing.dll 界面代码:1 <Window x:Class="WpfApp123.MainWindow"2 xmlns="http://sc…

Redis可视化工具推荐:Another Redis Desktop Manager使用教程与下载

Redis是一种高性能的Key-Value数据库,被广泛应用于缓存、消息队列等场景。尽管Redis的命令行工具功能强大,但对于许多开发者而言,使用一款可视化工具可以大大提高操作效率和用户体验。今天为大家推荐一款功能强大的Redis可视化工具——Another Redis Desktop Manager,并提供…

RISC-V篇-VSCode+qemu+gdb可视化调试Linux Kernel

https://zhuanlan.zhihu.com/p/4185359719本文发布于微信公众号:Linux底层小工,欢迎关注,获取更多原创技术文章! “VSCode+qemu+gdb调试OpenSBI确实很爽,那怎能少了调试kernel呢~~” 01 VScode调试MMU开启之前的kernel 有了调试OpenSBI的基础,再调试kernel,那设置相当简…

中考阅读理解深入逻辑分析-006 A Streams Journey to the Sea 一条小溪通往大海的旅程

文章正文 A little stream ran down from a high mountain far, far away through many villages and forests, until it reached a desert. The stream then thought,“I’ve been through countless difficulties. I should have no problem crossing the desert!”But as sh…

2024-2025-1 20241322 《计算机基础与程序设计》第十四周学习总结

2024-2025-1 20241322 《计算机基础与程序设计》第十四周学习总结 作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14这个作业的目标 自学教材《C语言程序设计》…

Chrome 或引入 Gemini AI 功能「Glic」,需访问麦克风;理想同学 App 即将上线支持语音交流、识物

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

洛谷题单指南-线段树的进阶用法-P3834 【模板】可持久化线段树 2

原题链接:https://www.luogu.com.cn/problem/P3834 题意解读:静态区间第k小问题,可持久化线段树(也称为主席树)模版题。 解题思路: 一、朴素想法:如何求完整区间[1,n]第k小 1、权值线段树 设n个数构成序列a,b数组代表a中元素出现的次数,即b数组的构建方式为对每一个a[…

FTP一键安装脚本(linux版)

简述:linux版权限可能会不容易理解,可参考windwos做为基础。一、FTP(linux版) 1. ftp详解 简介: vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。 vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、…

React—01—基本学习,如何在html中直接使用react;

一、react的特点:<script>标签这里要加一个“text/babel”,babel才知道这个<script>标签里要解析js代码,否则babel不会启动。 React 组件是返回标签的 JavaScript 函数:哪个组件是通过改变 state 实现可响应的,或者哪个组件拥有 这个 state。 然后我们需要确定…

记录python+pyside+qml+qtcharts 使用,防踩坑

使用QML-qtquick 进行开发时,有个使用chart图表的需求,看了一大圈,网上都是qmake或是cmake来构建QTchart,用python开发也只搜到QtWidgets模块进行图表绘制。然而我对qtwidgets不是很了解,想要的是QML开发,在使用ChartView{}时一直闪退,没有效果。经历了苦苦搜寻,终于在 h…

制作了一款 pdf 转换图片的工具( csharp 版 )

在 Windsurf 的帮助下,制作了一款 windows 下的 pdf 转换图片(png/jpg/tif)工具。支持递归查找 pdf,一些配置给写死了,适合简单使用。 PDF 批量转图片工具 这是一个功能强大且易用的 PDF 转图片工具,专为批量处理 PDF 文件设计。它能够将 PDF 文件的每一页转换为高质量的…

C# WPF PrintDialog 打印(1)

参考“WPF 打印实例”的文章:https://www.cnblogs.com/gnielee/archive/2010/07/02/wpf-print-sample.html 测试程序: 首先打印Canvas效果:看起来似乎没问题,但是调整窗体尺寸遮挡部分元素:再打印Canvas效果:可以发现PrintVisual方法只打印了可见部分的元素,测试打印Dat…