chore: 项目更名为 Verdaccio Mate

- 全站标识改为 Verdaccio Mate(登录页/顶部栏/关于页/浏览器标题)
- 镜像名改为 verdaccio-mate:latest,README 构建与部署示例同步
- 后端包名 verdaccio-mate-backend
- 修复 AppTopbar 模板多余闭合标签(Invalid end tag 导致 build 失败)
- 数据卷路径保持不变,避免 NAS 数据丢失
This commit is contained in:
DuMate
2026-09-26 21:00:17 +08:00
parent 9ddbc226ad
commit 47be1e4e88
8 changed files with 17 additions and 19 deletions
+5 -5
View File
@@ -1,4 +1,4 @@
# Verdaccio 可视化治理面板(缓存 + 私有包)
# Verdaccio Mate · 可视化治理面板(缓存 + 私有包)
对私有 npm Registry(Verdaccio)的**缓存目录与私有包**可视化治理面板:扫描缓存、来源识别(私有发布 / 上游缓存)、版本预警、清理低版本、拉取存量最新版本、维护 npm Top1000 榜单、README 预览、安装命令一键复制,并通过消息中心推送非实时通知。
@@ -114,8 +114,8 @@ npm run dev # http://localhost:5173(代理 /api -> 后端)
```bash
cd frontend && npm install && npm run build # 先构建前端 dist
cd .. && docker build --platform linux/amd64 -t verdaccio-cache-manager:latest .
docker save -o verdaccio-cache-manager-amd64.tar verdaccio-cache-manager:latest
cd .. && docker build --platform linux/amd64 -t verdaccio-mate:latest .
docker save -o verdaccio-mate-amd64.tar verdaccio-mate:latest
```
镜像基于 `node:20-slim`,仅含后端运行时依赖 + 前端静态产物,非 root 运行,监听 `3000`。
@@ -124,8 +124,8 @@ docker save -o verdaccio-cache-manager-amd64.tar verdaccio-cache-manager:latest
```yaml
services:
verdaccio-cache-manager:
image: verdaccio-cache-manager:latest
verdaccio-mate:
image: verdaccio-mate:latest
restart: unless-stopped
ports:
- "42338:3000"
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "verdaccio-cache-manager-backend",
"name": "verdaccio-mate-backend",
"version": "1.0.0",
"private": true,
"type": "module",
+2 -2
View File
@@ -1,10 +1,10 @@
# Verdaccio 缓存可视化管理面板(§12.2 Docker 部署)
# Verdaccio Mate · 可视化管理面板(缓存 + 私有包治理,§12.2 Docker 部署)
# Verdaccio 已独立部署,此处仅运行面板。
# storage 需读写挂载:清理版本要删除 .tgz 并回写 package.json 元数据(只读会报 EROFS);
# 容器以 root 运行以写入 verdaccio 卷(其属主为 verdaccio 用户 uid 10001,非本容器 uid 10000)
services:
verdaccio-manager:
image: verdaccio-cache-manager:latest # 已导入的 amd64 镜像(docker load 后直接可用)
image: verdaccio-mate:latest # 已导入的 amd64 镜像(docker load 后直接可用)
restart: always
user: "0:0" # root:清理需写 verdaccio 卷;vcm-data 命名卷 root 亦可写
environment:
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Verdaccio Manager · 你的缓存尽在掌握</title>
<title>Verdaccio Mate · 你的缓存与私有包 · 尽在掌握</title>
</head>
<body>
<div id="app"></div>
+3 -5
View File
@@ -111,11 +111,9 @@ onBeforeUnmount(() => document.removeEventListener('click', onDocClick))
<template>
<header class="topbar">
<div class="brand" @click="go('/')">
<div class="logo-emoji"><img class="logo-img" src="/logo.svg" alt="Verdaccio Manager" /></div>
<div>
<div class="brand-name">Verdaccio Manager</div>
<div class="brand-sub">你的缓存 · 尽在掌握</div>
</div>
<div class="logo-emoji"><img class="logo-img" src="/logo.svg" alt="Verdaccio Mate" /></div>
<div class="brand-name">Verdaccio Mate</div>
<div class="brand-sub">你的缓存 · 尽在掌握</div>
</div>
<nav class="nav">
+3 -3
View File
@@ -2,8 +2,8 @@
<div class="about-page">
<div class="about-card">
<div class="ab-head">
<img class="ab-logo" src="/logo.svg" alt="Verdaccio Manager" />
<div class="ab-title">Verdaccio 可视化治理面板</div>
<img class="ab-logo" src="/logo.svg" alt="Verdaccio Mate" />
<div class="ab-title">Verdaccio Mate · 可视化治理面板</div>
<div class="ab-sub">缓存 + 私有包 · 双重治理</div>
</div>
@@ -53,7 +53,7 @@
</div>
</section>
<div class="ab-foot">Verdaccio Manager · 你的缓存与私有包 · 尽在掌握</div>
<div class="ab-foot">Verdaccio Mate · 你的缓存与私有包 · 尽在掌握</div>
</div>
</div>
</template>
+2 -2
View File
@@ -37,8 +37,8 @@ async function login() {
<button class="theme-toggle" @click="toggle">{{ theme === 'dark' ? '☀️ 亮色' : '🌙 暗色' }}</button>
<div class="login-card">
<div class="login-logo"><img class="login-logo-img" src="/logo.svg" alt="Verdaccio Manager" /></div>
<div class="login-title">Verdaccio Manager</div>
<div class="login-logo"><img class="login-logo-img" src="/logo.svg" alt="Verdaccio Mate" /></div>
<div class="login-title">Verdaccio Mate</div>
<div class="login-sub">你的缓存 · 尽在掌握</div>
<div class="field">
Binary file not shown.