SuperAPI AI 工具集

setup-pre-commit

编程与开发

查看项目

更新于 10-18 16:15

技能介绍

用途

Setup Pre-Commit Hooks 用于在当前代码仓库中搭建 Husky pre-commit 钩子,配合 lint-staged(Prettier)、类型检查和测试,实现提交前自动执行代码检查与格式化。当用户希望添加 pre-commit 钩子时可以使用该技能。

主要能力

该技能会完成以下配置:

  • 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 钩子,可作为一次良好的冒烟测试。

适用场景

适用于需要为 JavaScript/TypeScript 项目添加提交前自动格式化、类型检查和测试的开发者,尤其是使用 Husky 与 lint-staged 工作流的仓库。

限制与注意事项

  • Husky v9+ 的钩子文件不需要 shebang。
  • prettier --ignore-unknown 会跳过 Prettier 无法解析的文件(如图片等)。
  • pre-commit 先运行 lint-staged(快速、仅针对暂存文件),然后运行完整的 typecheck 和测试。
  • 若仓库缺少 typecheck 或 test 脚本,相应步骤会被省略。
  • 关于收费、价格、平台支持范围等信息,资料中暂未提供。