使用Verdaccio搭建npm私服
本文将详细介绍如何使用Verdaccio搭建npm私有服务器,以及配置文件config.yaml
的详细讲解。我们还将讲解如何发送邮件通知私有包更新,以及如何使用Docker部署。
一、搭建Verdaccio服务器
Verdaccio是一个简单、零配置的npm私有服务器,可以用于存储和管理私有npm包。以下是搭建Verdaccio服务器的步骤:
- 安装Node.js,确保Node.js和npm已安装在您的系统上。您可以通过在命令行输入以下命令来验证:
node -v
npm -v
- 全局安装Verdaccio:
npm install -g verdaccio
- 运行Verdaccio服务器:
verdaccio
默认情况下,Verdaccio会在http://localhost:4873上启动。此时,您已经成功搭建了一个基本的npm私有服务器。
二、创建和配置config.yaml
接下来,我们将创建并配置config.yaml
文件,以便定制我们的Verdaccio服务器。
# 服务器监听地址
listen: 0.0.0.0:4873
# 数据存储路径
storage: ./storage
# 插件目录路径
plugins: ./plugins
# Web界面配置
web:
# 是否启用Web界面
enable: true
# Web界面标题
title: "My Private npm Registry"
# 用户身份验证配置
auth:
htpasswd:
# 用户文件存储路径
file: ./htpasswd
# 最大用户数量
max_users: 1000
# 上游仓库配置
uplinks:
npmjs:
# 上游仓库的URL,这里我们使用官方的npm仓库
url: https://registry.npmjs.org/
# 包配置
packages:
# 适用于所有scope的包
'@*/*':
# 访问权限,$all表示所有人都可以访问
access: $all
# 发布权限,$authenticated表示只有经过身份验证的用户可以发布
publish: $authenticated
# 配置代理上游仓库,这里我们使用npmjs
proxy: npmjs
# 适用于所有包
'**':
# 同上
access: $all
publish: $authenticated
proxy: npmjs
# 通知配置
notify:
# 通知服务接口方式
method: POST
# 通知服务接口请求头
headers: [{ 'Content-Type': 'application/json' }]
# 通知服务接口请求地址
endpoint: http://localhost:3000/notify
# 通知服务接口请求体
content: '{"text": "{{ name }}"}'
# 日志配置
logs:
# 输出类型,如stdout表示输出到控制台
- { type: stdout, format: pretty, level: http }
# 服务器URL前缀,用于生成正确的访问链接
url_prefix: http://localhost:4873
可在启动Verdaccio时通过-c
或--config
选项来指定config.yaml
文件路径。
verdaccio --config /path/to/your/config.yaml
或者使用-c
简写:
verdaccio -c /path/to/your/config.yaml
node邮件通知服务简单示例
- 安装
nodemailer
模块,用于发送邮件:
npm install -g nodemailer
- 创建一个名为
email-webhook.js
的JavaScript文件,用于处理notify请求并发送邮件。
const Koa = require("koa");
const Router = require("koa-router");
const bodyParser = require("koa-bodyparser");
const nodemailer = require("nodemailer");
const app = new Koa();
const router = new Router();
const cors = require("@koa/cors");
app.use(cors());
// 配置邮件发送器,联系可使用QQ邮箱,user和pass分别填写邮箱地址和授权码
const transporter = nodemailer.createTransport({
service: "QQ",
auth: {
user: "your_email@example.com",
pass: "your_email_password",
},
});
app.use(bodyParser());
router.post("/notify", async (ctx) => {
const html = `<html>
<body>
<p>${ctx.request.body.text}</p>
</body>
</html>
`;
const mailOptions = {
from: "your_email@example.com",
to: "recipient@example.com",
subject: `私服有更新!!!`,
html: html,
};
try {
const info = await transporter.sendMail(mailOptions);
console.log(`Email sent: ${info.response}`);
} catch (error) {
console.log(error);
}
ctx.status = 200;
});
app.use(router.routes());
app.use(router.allowedMethods());
const port = 3000;
app.listen(port, () => {
console.log(`Email webhook listening on port ${port}`);
});
三、使用Docker部署Verdaccio
为了简化部署过程,我们可以使用Docker部署Verdaccio服务器。首先,创建一个Dockerfile
,内容如下:
FROM node:latest
RUN npm install -g verdaccio
COPY config.yaml /verdaccio/conf/config.yaml
EXPOSE 4873
CMD ["verdaccio", "-c", "/verdaccio/conf/config.yaml"]
然后,使用以下命令构建Docker镜像:
docker build -t my-verdaccio .
最后,使用以下命令启动Docker容器:
docker run -d --name my-verdaccio -p 4873:4873 my-verdaccio
此时,您的Verdaccio服务器将在Docker容器中运行。
四、npm私服使用示例
首先,添加私有服务器到npm配置:
npm set registry http://localhost:4873
接下来,我们将介绍如何使用npm私服完成常见操作。
- 添加用户:
npm adduser --registry http://localhost:4873
按照提示输入用户名、密码和邮箱地址,即可在私有服务器上创建一个新用户。
- 登录:
npm login --registry http://localhost:4873
输入用户名、密码和邮箱地址,即可登录到私有服务器。
- 发布包:
在您的npm项目目录下,使用以下命令发布包:
npm publish --registry http://localhost:4873
这将把您的npm包发布到私有服务器。
- 安装包:
使用以下命令从私有服务器安装包:
npm install your-package-name --registry http://localhost:4873
这将从私有服务器安装指定的包。
- 更新包:
更新npm包的版本号,然后使用以下命令发布更新:
npm publish --registry http://localhost:4873
这将把更新后的npm包发布到私有服务器,已配置的邮件通知将发送给指定的收件人。
- 删除包:
使用以下命令从私有服务器删除包:
npm unpublish your-package-name --registry http://localhost:4873
这将从私有服务器删除指定的包。
通过以上示例,您已经了解了如何使用搭建好的npm私服来管理和使用私有npm包。
总结
通过本篇博客,您可以学习到如何使用Verdaccio
搭建一个私有的npm
服务器,以及如何配置各种功能,希望这篇博客能够帮助您更好地管理npm
依赖,并提升您的开发效率。
转载自:https://juejin.cn/post/7212561868136218684