用途:为当前仓库设置 Husky pre-commit 钩子,在提交前自动用 Prettier 格式化暂存文件,并运行类型检查与测试。
主要能力:安装 husky、lint-staged、prettier 为 devDependencies;初始化 Husky;创建 .husky/pre-commit 执行 npx lint-staged、类型检查与测试脚本;创建 .lintstagedrc,对所有文件运行 prettier --ignore-unknown --write;在缺失时创建 .prettierrc 默认配置;最后暂存并提交。
使用方式:先检测包管理器——存在 package-lock.json 用 npm,pnpm-lock.yaml 用 pnpm,yarn.lock 用 yarn,bun.lockb 用 bun,不确定默认 npm。安装依赖后执行 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 存在、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,再运行完整类型检查与测试。其余细节暂未提供。