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