关于 pre-push
pre-push 是一项在代码推送到远程仓库前运行项目检查的技能。有 npm pre-push 脚本时会优先运行;否则检测语言对应的 lint、测试和构建检查,并汇报结果。
主要功能
- 01运行已有的 npm pre-push 脚本
- 02检测项目语言和可用检查
- 03并行运行互不依赖的检查
- 04汇报命令及通过或失败结果
- 05识别缺失工具或依赖
适用场景
- 01推送代码前检查项目
- 02运行可用的 lint 和测试命令
- 03推送前查看构建状态
- 04查找缺失的检查工具或依赖
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ morphet81/ cheat-sheets --skill pre-push安装后在 Claude Code 中输入/pre-push确认已加载。
详细介绍
运行推送前检查,确保代码质量后再推送到远程。
用法:
/pre-push- 为当前项目运行所有推送前检查
说明:
-
检查是否有 npm 推送前脚本:
- 在当前目录中查找
package.json - 如果找到,检查
scripts部分中是否有pre-push脚本 - 如果脚本存在,运行
npm run pre-push并报告结果 - 如果成功,告知用户并在此处停止
- 在当前目录中查找
-
如果不存在推送前脚本,则自动检测并并行运行检查:
a. 识别项目类型:
- 检查是否有
package.json(Node.js/JavaScript/TypeScript 项目) - 检查是否有
pyproject.toml、setup.py、requirements.txt(Python 项目) - 检查是否有
Cargo.toml(Rust 项目) - 检查是否有
go.mod(Go 项目) - 检查是否有其他特定语言的文件
b. 检测可用的检查项(针对项目类型的 lint、测试、构建),然后使用
Task工具(subagent_type: general-purpose)并设置run_in_background: true,并行运行相互独立的检查:- 为每个独立的检查类别启动一个 Agent(例如,lint Agent、测试 Agent、构建 Agent)
- 不相互依赖的检查应并发运行——通常 lint 和测试相互独立,而构建可能依赖类型检查
c. Lint 检查:
-
Node.js/JavaScript/TypeScript:
- 检查
package.json脚本或.eslintrc*文件中是否有 ESLint - 检查
package.json脚本或.prettierrc*文件中是否有 Prettier - 检查
package.json脚本或tsconfig.json文件中是否有 TypeScript - 运行:
npm run lint或npx eslint .或npm run type-check或npx tsc --noEmit
- 检查
-
Python:
- 检查是否有:
pylint、flake8、black、mypy、ruff - 运行可用的 lint 工具(例如,
pylint src/、flake8 .、black --check .、mypy .)
- 检查是否有:
-
Rust:
- 运行:
cargo fmt --check和cargo clippy
- 运行:
-
Go:
- 运行:
go fmt ./...和golint ./...或go vet ./...
- 运行:
d. 测试检查:
-
**Node.js:**检查
package.json中的测试脚本- 运行:
npm test或npm run test:ci(如果可用)
- 运行:
-
Python:
- 检查是否有:
pytest、unittest、nose2 - 运行:
pytest或python -m pytest或python -m unittest discover
- 检查是否有:
-
Rust:
- 运行:
cargo test
- 运行:
-
Go:
- 运行:
go test ./...
- 运行:
e. 构建检查:
- 如适用,尝试构建项目以确保没有编译错误
- Node.js:
npm run build(如果有该脚本) - Rust:
cargo build - Go:
go build ./...
- 检查是否有
-
报告结果:
- 等待所有并行 Agent 完成并汇总结果
- 清晰总结执行的所有检查
- 报告每项检查的通过/失败状态
- 如果有任何检查失败,显示错误并提供修复建议
- 列出运行过的命令,以便用户了解详情
- 如果所有检查均通过,确认代码已准备好推送
-
处理边缘情况:
- 如果未检测到测试或 lint 工具,提醒用户并询问是否要在不进行检查的情况下继续
- 如果命令因缺少依赖项而失败,提供安装命令
- 如果项目是 monorepo 或工作区,进行相应检测和处理
输出示例:
## Pre-Push Checks
### Linting
ESLint passed
Prettier check passed
TypeScript compilation passed
### Testing
All tests passed (24 tests, 0 failures)
### Build
Build successful
---
All pre-push checks passed! Code is ready to push.
Commands run:
- npm run lint
- npm test
- npm run build
失败时:
## Pre-Push Checks
### Linting
ESLint failed
Error in src/components/Button.tsx:
15:7 error 'onClick' is missing in props validation react/prop-types
### Testing
All tests passed
---
Pre-push checks failed. Please fix the issues above before pushing.
评论
支持 Markdown