文档开发

开发

面向参与本项目的开发者:环境搭建、测试、发布流程与文档结构。

本地开发环境

要求 Node.js ≥ 20(推荐 22):

npm install
PASSWORD=dev-password npm run dev   # http://localhost:8080
  • PASSWORD 本地必填(登录与会话签名依赖它);
  • 开发模式不启用 output: 'standalone'(仅 Docker 构建使用,见 Deployment)。

常用命令

命令 说明
npm run dev 开发服务器(8080 端口)
npm run build / npm start 生产构建与启动
npm test Vitest 单元测试(纯逻辑库 + 部分 Route Handler)
npm run typecheck TypeScript 全量检查
npm version patch|minor|major 升版本并打 tag(发布流程见下)

测试

单元测试集中在 src/lib 与部分 src/app/api 路由,覆盖核心纯逻辑:

  • 解析层:cms-parser(Apple CMS 列表/详情/详情页爬取、成人内容过滤)、m3u-parser / xmltv(直播与节目单)、source-list / tvbox-parser(订阅格式与 TVBOX 兼容)、env-sources / env-live-sources(预置变量);
  • 安全层:ssrf(内网/保留地址识别、DNS 校验)、auth(会话签名、过期、限流);
  • 状态层:store(订阅同步、健康度自动停用、直播多归属共享);
  • 接口层:聚合搜索(跨源去重、置顶、流式)、直播测活等 Route Handler。

约定:业务逻辑尽量下沉到 src/lib 纯函数(不依赖 DOM/网络),Route Handler 只做编排——这是可测试性的前提。新增解析或安全逻辑请同步补测试。

发布新版本

版本号以 package.json 为单一事实来源,镜像由 GitHub Actions 在 v* tag 上自动构建(双架构、GHCR + Docker Hub),详见 Deployment · 镜像分发与版本管理:

npm version patch       # 或 minor / major;更新 package.json 并打 git tag
git push && git push --tags

CI 会校验 tag 与 package.json 版本一致,不一致直接失败。

文档(本 Wiki)

Wiki 独立成仓(libretv-wiki),与代码仓库同步演进;README 保持精简面向使用者,细节下沉到 Wiki。各页职责边界:

页面 职责 不写什么
Home 导航枢纽、快速开始 不重复功能细节
Deployment 部署、镜像与版本、升级迁移 不解释环境变量语义(链到 Configuration)
Configuration 环境变量权威表、用户级运行时设置 不重复功能页的行为细节
Data-Sources 点播源/订阅/分享/健康度的权威说明 直播细节归 Live-IPTV
Live-IPTV 直播模块权威说明 —
Recommendations / Player 对应功能域权威说明 —
Proxy-Security 鉴权/SSRF/代理设计 —
FAQ 问题排查,短答案 + 深链 不长篇展开
Architecture 技术栈、目录、数据流、旧版对比 —

同一机制多处提及时,非权威页只写一句概述 + 链接(如健康度自动停用以 Data-Sources 为权威),避免多处描述漂移。

目录结构与数据流

见 Architecture。