React + Ts + Vite加入工程化
已加入的工程化能力
| 类别 | 内容 | 作用 |
|---|---|---|
|
代码格式 |
Prettier + |
统一代码风格 |
|
代码质量 |
ESLint + eslint-config-prettier |
避免 ESLint 与 Prettier 冲突 |
|
单元测试 |
Vitest + Testing Library |
|
|
Git 钩子 |
Husky + lint-staged |
commit 前自动 format + lint |
|
环境变量 |
|
文档化配置项 |
|
编辑器 |
|
统一缩进、换行 |
|
PR 规范 |
|
PR 自检清单 |
|
CI/CD 增强 |
CI / Deploy 增加 |
合并前多一道门禁 |
新增 npm scripts
pnpm format # 格式化全部代码
pnpm format:check # 检查格式(CI 用)
pnpm typecheck # 仅类型检查
pnpm test # 跑单元测试
pnpm test:watch # 监听模式
pnpm test:coverage # 覆盖率报告
本地启用 Git 钩子
push 后其他人 clone 下来执行:
pnpm install # 自动跑 husky prepare,注册 pre-commit
之后每次 git commit 会自动对暂存文件执行 Prettier + ESLint。
当前工程化架构

后续可继续加强(按需)
- E2E 测试:Playwright 测拖拽、创建任务
- Commit 规范:commitlint + conventional commits
- API 校验:用 Zod 校验请求/响应(项目里已有 zod)
- 错误监控:Sentry 接入线上
- Branch Protection:
main必须 CI 通过才能合并 - Dependabot:自动更新依赖
一、都增加或修改了什么?
1. 代码质量与格式
| 文件/配置 | 改动 |
|---|---|
|
|
统一代码格式 |
|
|
接入 |
|
全项目源码 |
跑过一次 |
2. 测试
| 文件 | 改动 |
|---|---|
|
|
单元测试框架 |
|
|
测试环境初始化 |
|
|
API 层示例测试(2 个用例) |
3. Git 工作流
| 文件 | 改动 |
|---|---|
|
|
commit 前自动检查 |
|
|
只检查暂存文件,加快速度 |
|
|
|
4. 规范与文档
| 文件 | 改动 |
|---|---|
|
|
编辑器缩进、换行一致 |
|
|
环境变量说明 |
|
|
PR 描述模板 |
|
|
忽略 |
5. 包管理规范
| 文件 | 改动 |
|---|---|
|
|
|
|
新增 scripts |
|
6. CI/CD(工程化的一部分,之前已有)
| 文件 | 作用 |
|---|---|
|
|
PR/push 时:format → lint → test → build |
|
|
合并 main 后部署 GitHub Pages |
CI 在工程化阶段的新增项: format:check、test(原先只有 lint + build)。
二、为什么需要工程化?
你这个看板项目已经具备:
- 前端 + 后端 API
- 拖拽、持久化
- CI/CD 自动部署
继续单人开发还勉强够用,但会遇到:
| 场景 | 没有工程化时 |
|---|---|
|
改完 push |
可能线上 build 失败才发现 |
|
两人协作 |
缩进、引号、风格不一致,diff 噪音大 |
|
重构 API |
不知道有没有改坏,只能手动点页面 |
|
新人加入 |
不知道用什么 Node、怎么配环境 |
|
合 PR |
缺少统一检查,容易合入有问题的代码 |
工程化的目标:把「靠人记、靠手测」变成「工具自动兜底」。
三、解决了什么问题?
工程化前工程化后手动测pushCI 可能失败线上出问题pre-commit 本地拦截pushCI 全量检查通过才合并/部署
| 问题 | 怎么解决 |
|---|---|
|
格式不统一 |
Prettier + |
|
低级代码错误 |
ESLint |
|
核心逻辑被改坏 |
Vitest(目前覆盖 API 层) |
|
坏代码进仓库 |
Husky pre-commit |
|
坏代码进 main |
CI 门禁 |
|
环境不一致 |
|
|
PR 信息缺失 |
PR 模板 |
|
部署前未验证 |
Deploy workflow 同样跑 test/lint |
四、引入了新问题吗?
有,主要是成本和复杂度,属于正常 trade-off:
| 新问题 | 说明 | 应对 |
|---|---|---|
|
commit 变慢 |
pre-commit 要跑 format + lint |
lint-staged 只检查暂存文件;紧急时可 |
|
CI 更严格 |
format/test 失败会拦合并 |
本地先跑 |
|
Prettier 大 diff |
首次 format 改了很多文件 |
已做过一次;之后 diff 会小很多 |
|
测试覆盖不足 |
只有 API 2 个用例,拖拽/UI 未测 |
后续补组件测试、E2E(Playwright) |
|
Husky 需初始化 |
新 clone 要 |
写在 README 或 onboarding 里 |
|
维护成本 |
多一套依赖要升级 |
可用 Dependabot 自动提 PR |
|
规则可能过严 |
例如 shadcn 组件 ESLint 例外 |
已在 |
没有解决、也不在本轮工程化范围内的:
- 线上 API 仍要单独部署(Render 等),GitHub Pages 不能跑 Node
- E2E、性能监控、错误上报(Sentry)尚未接入
- commit message 规范(commitlint)未加
五、一句话总结
| 维度 | 内容 |
|---|---|
|
改了什么 |
格式、测试、Git 钩子、环境文档、CI 增强 |
|
为什么 |
从「个人 demo」升级到「可协作、可持续交付」 |
|
解决什么 |
风格乱、低级错误、坏代码上线、环境不一致 |
|
新代价 |
流程更严、学习成本略增、测试覆盖还需继续补 |
当前阶段是轻量工程化:适合个人项目和小团队协作。若团队变大,可再补 E2E、commitlint、Branch Protection、Sentry 等。
更多推荐
所有评论(0)