用途:在当前仓库中搭建 Husky pre-commit 钩子,配合 lint-staged 使用 Prettier 格式化暂存文件,并在提交前运行类型检查与测试。
主要能力:自动检测包管理器(依据 package-lock.json、pnpm-lock.yaml、yarn.lock、bun.lockb,无法判断时默认 npm);安装 husky、lint-staged、prettier 为 devDependencies;初始化 Husky;创建 .husky/pre-commit、.lintstagedrc 及缺失时的 .prettierrc;最后暂存并提交变更以验证钩子。
使用方式:执行 npx husky init 初始化;.husky/pre-commit 中依次运行 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 验证。
限制与说明:Husky v9+ 的钩子文件无需 shebang;prettier --ignore-unknown 会跳过无法解析的文件(如图片);pre-commit 先运行 lint-staged(快速、仅暂存文件),再执行完整类型检查与测试。