# 贡献指南 感谢你愿意改进 dsh-team-panel。本文档说明开发环境、自检方式,以及几条**这个项目特有的硬约束**。 ## 环境 - Node.js **>= 20**(用到内置 `fetch`、`AbortController`) - **零运行时依赖**:请不要引入 npm 依赖。`lib/` 与 `scripts/` 只用 Node 内置模块。 - 不需要构建步骤:`lib/panel.js` 是直接注入浏览器的纯脚本,改完刷新页面即可生效。 ```powershell git clone cd dsh-team-panel node scripts/ci.mjs # 跑全部自检,不需要装任何依赖 ``` ## 自检 本项目有 132 项自检,**提交前必须全绿**。 ```powershell node scripts/ci.mjs # 全套(含起一个临时 hub 做联调),推荐 node scripts/ci.mjs --offline # 只跑不需要 hub 的部分 ``` 单独跑某一块: | 脚本 | 覆盖范围 | 项数 | |---|---|---| | `scripts/entrycheck.mjs` | 各模块能否真的被 import / 执行 | 17 | | `scripts/mounttest.mjs` | 用仿 DOM 跑真实 `panel.js`,验证锚点、插入顺序、窄栏隐藏 | 16 | | `scripts/selftest.mjs` | 峰谷判定(边界 / 周末 / 法定节假日)+ hub API | 38 | | `scripts/plugintest.mjs` | 宿主端插件(mock ctx)+ 真实 hub 联调 | 61 | **加新功能时请同步加自检**——这个项目没有人工回归流程,全靠这些脚本。 新增自检请写进上面某个既有脚本,并同步更新本节与 README 里的项数。 ## 这个项目的硬约束 这几条都是踩过坑总结出来的,**请勿为了方便而违反**: ### 1. `.cmd` 文件只能是 ASCII,且必须 CRLF `cmd.exe` 按**控制台代码页**逐行解析批处理文件。本机代码页是 GBK,而文件是 UTF-8, 中文会被当成乱码字节,其中某些字节恰好是 `&` `|` `>` —— 整行命令被读崩。最小复现: ```bat @echo off echo 中文输出探测 <-- 报错: 'cho' is not recognized as an internal or external command ``` 所以:**中文提示一律交给 Node 脚本输出**,`.cmd` 里先 `chcp 65001 >nul` 再启动 Node。 行尾必须是 CRLF(`.gitattributes` 已强制),裸 LF 会让 `goto`、标签、`if (...)` 块解析出错。 ### 2. `lib/panel.js` 不引入模块系统 它是通过 `