用途:在当前仓库中搭建 Husky pre-commit 钩子,配合 lint-staged 对暂存文件运行 Prettier,并在提交前执行类型检查与测试。
主要能力:自动检测包管理器(依据 package-lock.json、pnpm-lock.yaml、yarn.lock、bun.lockb,无法判断时默认 npm);以 devDependencies 安装 husky、lint-staged、prettier;初始化 Husky;创建 .husky/pre-commit、.lintstagedrc,并在缺少 Prettier 配置时创建 .prettierrc;最后验证并提交。
使用方式:先检测包管理器,再安装依赖,运行 npx husky init 生成 .husky/ 目录并在 package.json 添加 prepare: "husky"。随后创建 .husky/pre-commit,内容为 npx lint-staged、npm run typecheck、npm run test(按检测到的包管理器替换 npm;若 package.json 中没有 typecheck 或 test 脚本则省略对应行并告知用户)。创建 .lintstagedrc,内容为 {"*": "prettier --ignore-unknown --write"}。仅在无 Prettier 配置时创建 .prettierrc,默认值包括 useTabs: false、tabWidth: 2、printWidth: 80、singleQuote: false、trailingComma: "es5"、semi: true、arrowParens: "always"。验证 .husky/pre-commit 存在且可执行、.lintstagedrc 存在、prepare 脚本为 "husky"、Prettier 配置存在,并运行 npx lint-staged 确认可用。最后暂存所有变更并以 "Add pre-commit hooks (husky + lint-staged + prettier)" 提交,作为冒烟测试。
适用场景:需要为 JavaScript/TypeScript 项目添加提交前自动格式化与检查的仓库。
限制:Husky v9+ 的钩子文件无需 shebang;prettier --ignore-unknown 会跳过 Prettier 无法解析的文件(如图片);pre-commit 先运行 lint-staged(快速、仅暂存文件),再执行完整类型检查与测试。其他平台或非 Node 项目的支持情况暂未提供。