SuperAPI AI 工具集

setup-pre-commit

编程与开发

查看项目

更新于 10-15 08:33

技能介绍

Setup Pre-Commit 用于在当前代码仓库中搭建 Husky pre-commit 钩子,将代码格式检查、类型检查和测试接入提交前流程。

用途 该技能适用于用户想要添加 pre-commit 钩子、为仓库配置提交前自动检查的场景。它会一次性建立 Husky 钩子、lint-staged(运行 Prettier)、Prettier 配置(若缺失),以及在 pre-commit 钩子中运行 typecheck 与 test 脚本。

主要能力 配置内容包含:Husky pre-commit 钩子;lint-staged 对所有暂存文件运行 Prettier;Prettier 配置(若缺失);以及 pre-commit 钩子中的 typecheck 与 test 脚本。

使用方式 按以下步骤执行:

  1. 检测包管理器:检查 package-lock.json(npm)、pnpm-lock.yaml(pnpm)、yarn.lock(yarn)、bun.lockb(bun),使用其中存在的那个;不明确时默认 npm。

  2. 安装依赖:将 husky、lint-staged、prettier 安装为 devDependencies。

  3. 初始化 Husky:运行 npx husky init。这会创建 .husky/ 目录并在 package.json 中添加 prepare: "husky"。

  4. 创建 .husky/pre-commit:写入以下内容(Husky v9+ 无需 shebang):

npx lint-staged npm run typecheck npm run test

需适配:将 npm 替换为检测到的包管理器;若 package.json 中没有 typecheck 或 test 脚本,则省略相应行并告知用户。

  1. 创建 .lintstagedrc:

{ "*": "prettier --ignore-unknown --write" }

  1. 创建 .prettierrc(若缺失):仅在没有任何 Prettier 配置时创建,使用以下默认值:

{ "useTabs": false, "tabWidth": 2, "printWidth": 80, "singleQuote": false, "trailingComma": "es5", "semi": true, "arrowParens": "always" }

  1. 验证:确认 .husky/pre-commit 存在且可执行;.lintstagedrc 存在;package.json 中的 prepare 脚本为 "husky";prettier 配置存在;运行 npx lint-staged 验证其可用。

  2. 提交:暂存所有变更/新建的文件,并以信息提交:Add pre-commit hooks (husky + lint-staged + prettier)。该提交会经过新配置的 pre-commit 钩子,作为一次良好的冒烟测试,验证一切正常。

适用场景 需要在仓库中引入统一的提交前代码格式化、类型检查和测试流程的项目,尤其是使用 Husky v9+、配套 Prettier 的 JavaScript/TypeScript 项目。

限制与注意事项 Husky v9+ 的钩子文件无需 shebang。prettier --ignore-unknown 会跳过 Prettier 无法解析的文件(如图片等)。pre-commit 先运行 lint-staged(快速、仅针对暂存文件),随后运行完整的 typecheck 和测试。若仓库缺少 typecheck 或 test 脚本,需省略相应行。价格、收费与平台支持等事实暂未提供。