DEVELOPMENT

开发部署

从克隆仓库到打包出安装包,整个流程都在这里。项目完全跑在本地,不需要自己的服务器(除了这个更新站)。

技术栈

萌萌音乐使用以下技术栈开发:

Vue 3 Vite Electron Pinia Element Plus Vue Router Node.js KuGouMusicApi

界面层是标准 Vue 3 单页应用,桌面能力(窗口、托盘、更新、开机自启)全部通过 preload 暴露的少量 IPC 完成,渲染进程不直接碰 Node。

环境准备

开始之前,请确保系统已安装:

  • Node.js 18 LTS 或更高(低于 18 部分依赖会装不上)
  • npm 随 Node.js 一起安装,或使用 pnpm / yarn
  • Git 与一个顺手的编辑器(VS Code 最省事)
  • Windows 10 / 11 打包目标平台,需要能运行 electron-builder

获取源码

克隆仓库并安装依赖,首次安装大约需要几分钟(Electron 二进制较大):

git clone https://github.com/LHX1925/mm-music-site/
cd mengmeng-music
npm install

国内网络装 Electron 慢的话,可以先设置镜像:npm config set electron_mirror https://npmmirror.com/mirrors/electron/

启动开发服务器

npm run dev

前端热更新由 Vite 负责,Electron 主进程会在窗口加载完成后自动打开。

调试

主窗口内按 F12(或 Ctrl+Shift+I)打开 DevTools;主进程日志直接输出到终端。

本地音乐接口由主进程自动拉起(默认端口 32100 标准版 / 32101 概念版)。如果端口被占用,客户端会提示并在设置里允许改端口。

项目结构

kugou-music/
├── electron/            # 主进程:窗口、托盘、更新、本地接口
│   ├── main.cjs         # 入口与全部 IPC
│   └── updater.cjs      # 检查更新 / 下载 / 覆盖安装
├── public/              # 图标与静态资源
├── src/
│   ├── api/             # 接口封装(搜索、歌单、歌词、MV)
│   ├── components/      # 播放条、歌词、弹窗等组件
│   ├── composables/     # 主题同步等组合式函数
│   ├── stores/          # Pinia:player / user / settings / update
│   ├── utils/           # 歌曲标记、设备号、歌词存储
│   ├── views/           # 页面(首页 / 搜索 / 歌单 / 设置)
│   ├── App.vue
│   └── main.js
├── package.json
└── vite.config.js

构建应用

打包前先构建前端产物,再用 electron-builder 生成安装包:

npx vite build
npx electron-builder --win

产物输出到 out_build 目录,安装版与便携版各一个 exe。

打包前请先退出正在运行的客户端,否则 app.asar 会被占用导致写入失败。

数据接口

歌单、搜索、播放地址等数据全部来自本地运行的 KuGouMusicApi。项目会同时拉起标准版与概念版两个实例,互不干扰。

32100标准版接口
32101概念版接口
Local无需公网

KuGouMusicApi 开源仓库 ↗

更新服务

这个官网同时是更新服务器。客户端启动后请求一次 /api.php?action=check,发现新版本就弹出更新窗;发新版只需在后台填版本号、上传 exe。

更新接口 →

贡献代码

欢迎任何形式的参与:报 bug、提需求、改文案、翻译,或者直接提交代码。

  1. Fork 仓库并克隆到本地
  2. 新建功能分支:git checkout -b feature/xxx
  3. 提交改动并推送到你的分支
  4. 发起 Pull Request,说明改动内容与验证方式
前往仓库

代码规范

保持与现有代码一致的风格:两空格缩进、单引号、组件用 Composition API。提交前请自行构建一次确认不报错。

常见问题

端口被占用怎么办?

默认使用 32100 / 32101。可在设置里改成其它端口,或先关掉占用端口的进程。

打包提示文件被占用?

退出正在运行的萌萌音乐(含托盘图标),再重新执行打包命令。

为什么搜不到歌?

检查本地接口是否已启动、设备号是否申请成功;概念版接口偶发风控,重启客户端即可重新申请。