用途
本技能用于在当前仓库中搭建 Husky pre-commit 钩子,让提交代码前自动执行格式化、类型检查与测试。
主要能力
会配置以下内容:Husky pre-commit 钩子;lint-staged 对所有暂存文件运行 Prettier;Prettier 配置(如果缺失);在 pre-commit 钩子中加入 typecheck 和 test 脚本。
使用方式
第一步,检测包管理器。检查是否存在 package-lock.json(npm)、pnpm-lock.yaml(pnpm)、yarn.lock(yarn)、bun.lockb(bun),使用实际存在的那个;不清楚时默认 npm。
第二步,安装依赖。以 devDependencies 方式安装:husky lint-staged prettier。
第三步,初始化 Husky。运行 npx husky init,这会创建 .husky/ 目录并在 package.json 中添加 prepare: "husky"。
第四步,创建 .husky/pre-commit。写入(Husky v9+ 不需要 shebang):
npx lint-staged npm run typecheck npm run test
并做适配:将 npm 替换为检测到的包管理器;如果仓库 package.json 中没有 typecheck 或 test 脚本,则省略相应行并告知用户。
第五步,创建 .lintstagedrc:
{ "*": "prettier --ignore-unknown --write" }
第六步,创建 .prettierrc(如果缺失)。仅在不存在 Prettier 配置时创建,使用以下默认值:
{ "useTabs": false, "tabWidth": 2, "printWidth": 80, "singleQuote": false, "trailingComma": "es5", "semi": true, "arrowParens": "always" }
第七步,验证。确认 .husky/pre-commit 存在且可执行;.lintstagedrc 存在;package.json 中的 prepare 脚本为 "husky";Prettier 配置存在;运行 npx lint-staged 验证其可正常工作。
第八步,提交。暂存所有变更/新建文件,并以如下消息提交:Add pre-commit hooks (husky + lint-staged + prettier)。该提交会经过新配置的 pre-commit 钩子,可作为一次良好的冒烟测试。
适用场景
适用于希望为仓库添加 pre-commit 钩子、在提交前自动格式化暂存文件并运行类型检查与测试的项目。
限制与注意事项
Husky v9+ 的钩子文件不需要 shebang;prettier --ignore-unknown 会跳过 Prettier 无法解析的文件(如图片等);pre-commit 先运行 lint-staged(快速、仅针对暂存文件),再运行完整 typecheck 与测试。其他收费、价格或平台信息暂未提供。