| name | setup-pre-commit |
| description | 在当前仓库中配置 Husky pre-commit hooks,并接入 lint-staged(Prettier)、类型检查和测试。适用于用户希望添加 pre-commit hooks、配置 Husky 或 lint-staged,或在提交时运行格式化、类型检查和测试的场景。 |
配置 Pre-Commit Hooks
将要配置的内容
- Husky pre-commit hook
- lint-staged,对所有暂存文件运行 Prettier
- Prettier 配置(缺失时创建)
- 在 pre-commit hook 中运行 typecheck 和 test scripts
步骤
1. 检测包管理器
检查 package-lock.json(npm)、pnpm-lock.yaml(pnpm)、yarn.lock(yarn)和 bun.lockb(bun)。使用仓库中已有的包管理器。无法判断时默认使用 npm。
2. 安装依赖
将以下包安装为 devDependencies:
husky lint-staged prettier
3. 初始化 Husky
npx husky init
该命令会创建 .husky/ 目录,并在 package.json 中添加 prepare: "husky"。
4. 创建 .husky/pre-commit
写入以下内容(Husky v9+ 不需要 shebang):
npx lint-staged
npm run typecheck
npm run test
按仓库调整:把 npm 替换为检测到的包管理器。package.json 中没有 typecheck 或 test script 时,省略对应行并告知用户。
5. 创建 .lintstagedrc
{
"*": "prettier --ignore-unknown --write"
}
6. 创建 .prettierrc(缺失时)
仅在仓库中没有任何 Prettier 配置时创建。使用以下默认值:
{
"useTabs": false,
"tabWidth": 2,
"printWidth": 80,
"singleQuote": false,
"trailingComma": "es5",
"semi": true,
"arrowParens": "always"
}
7. 验证
8. 提交
暂存所有新增和修改的文件,并使用以下消息提交:Add pre-commit hooks (husky + lint-staged + prettier)
这次提交会经过刚配置的 pre-commit hooks,可作为一次有效的冒烟测试。
说明
- Husky v9+ 的 hook 文件不需要 shebang
prettier --ignore-unknown 会跳过 Prettier 无法解析的文件(例如图片)
- pre-commit 先运行 lint-staged(速度快,只处理暂存文件),随后运行完整的类型检查和测试