ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何向Pokémon Showdown Client提交第一个PR?Linter规则、类型检查与测试完整清单

如何向Pokémon Showdown Client提交第一个PR?Linter规则、类型检查与测试完整清单 如何向Pokémon Showdown Client提交第一个PRLinter规则、类型检查与测试完整清单【免费下载链接】pokemon-showdown-clientThe client for Pokémon Showdown项目地址: https://gitcode.com/gh_mirrors/po/pokemon-showdown-client第一次想给Pokémon Showdown Client提代码却不知从哪下手别担心。这篇文章面向新手手把手带你跑通本地构建、Linter 检查、TypeScript 类型检查与测试三大关卡最后附一份可直接照抄的 PR 自查清单。照着走你就能自信地发出第一个Pokémon Showdown Client 贡献 PR。为什么这个客户端值得你贡献这个仓库是Pokémon Showdown的前端客户端负责运行play.pokemonshowdown.com正在用TypeScript Preact重写新客户端。理解它的加载架构能让你快速定位该改哪个文件第一阶段基础样式 后台模型client.css、client-core.ts第二阶段基础 UI 与连接client-main.ts、SockJS、client-connection.ts第四阶段重量级面板对战、队伍编辑器仅在对战或打开队伍页时才加载完整架构说明见 CONTRIBUTING.md。一键搭建本地开发环境先确认你装了Node.js v20 或更高版本和Git然后克隆仓库并构建克隆项目git clone https://gitcode.com/gh_mirrors/po/pokemon-showdown-client进入目录执行node buildWindows或./build其他系统构建脚本会自动安装依赖、生成config/config.js并编译出测试页 构建脚本会自动npm install无需手动装依赖。本地测试浏览器打开 play.pokemonshowdown.com/testclient-new.html即可在不搭建登录服务器的情况下验证改动。若需要已登录账号在config/testclient-key.js写入你的sid注意放config/不是play.pokemonshowdown.com/config/。每次改完代码重跑一次构建即可。跑通 Linter代码风格规则全解析提交前必须过ESLint检查。项目的规则由两层组成eslint.config.mjs按文件类型分组浏览器 ES3、Node、TypeScripteslint-ps-standard.mjsShowdown 共享风格缩进用 Tab、1tbs 花括号、保留分号、单引号、行宽 120常用命令定义在 package.json命令作用npm run lint运行 Linter 检查npm run fix自动修复可修复的风格问题几条必须记住的约束详见 CONTRIBUTING.md目标语言为ES3不能用Map/Set改用普通对象、不能async/awaitPromise可以可用 polyfillArray#includes、Object.assign、String#trim等常见硬规则eqeqeq用、no-var、prefer-const、no-fallthrough 小技巧写完后先跑npm run fix自动修正格式再npm run lint看剩余问题能省一半时间。类型检查TypeScript 严格模式入门新客户端用TypeScript编写配置见 tsconfig.json开启了strict: true与noImplicitOverride: true并且noEmit: true只做类型检查、不产出文件。覆盖范围包括play.pokemonshowdown.com/src/、replay.pokemonshowdown.com/src/、teams.pokemonshowdown.com/src/下的.ts/.tsx。运行类型检查npx tsc对新手最重要的两点strict模式变量未初始化、可能为undefined都会报错养成显式标注的习惯noImplicitOverride重写父类方法必须写override关键字漏写会直接报错测试用 Node 内置框架验证改动项目使用Node 原生测试运行器node:testassert无需额外安装框架。现有用例test/battle.test.js解析一段完整对战日志校验血量、换人、道具等状态test/ev-optimizer.test.js、test/ev-guesser.test.js验证 EV 猜测与优化逻辑运行全部测试node --test test/*.js此外还有两个辅助脚本test/check-filenames 校验精灵图片命名test/parse 用于调试文本解析。改动对战或解析逻辑时务必补一个断言再提交。提交 PR 前完整自查清单一条命令npm test会依次跑完构建 →tsc类型检查 →eslint --max-warnings 0→node --test。全部通过才算真正“绿”。提交前逐项对照#检查项命令 / 文件说明1构建成功node build/ build能编译、生成测试页2Linter 零警告npm run lint风格、ES3 约束、无no-shadow3类型检查通过npx tsctsconfig.jsonstrict 模式无报错4测试全部通过node --test test/*.js覆盖你改动的逻辑5本地页面验证testclient-new.html浏览器实际跑一遍6无遗留调试代码—删掉console.log、测试 key小结给Pokémon Showdown Client提第一个 PR 其实并不神秘装好 Node v20 →node build起测试页 →npm run fix修风格 →npx tsc过类型 →node --test跑测试最后按上表逐项勾选即可。把这份清单存好你后续每一次贡献都能做到又快又稳。祝你早日看到自己的 PR 被合并【免费下载链接】pokemon-showdown-clientThe client for Pokémon Showdown项目地址: https://gitcode.com/gh_mirrors/po/pokemon-showdown-client创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表