### 回答
要解决这个问题,你需要确保 `.husky` 目录和其中的钩子文件在版本控制中被正确跟踪,并且避免在每次安装依赖时重新初始化 Husky。
1. **确保 `.husky` 目录被版本控制**:
确保 `.husky` 目录及其内容(如 `pre-commit` 文件)已经被添加到你的版本控制系统(如 Git)中。这样,团队成员在克隆仓库时会得到这些配置,而不需要重新初始化。
2. **修改 `prepare` 脚本**:
由于每次运行 `pnpm i` 都会执行 `prepare` 脚本,而 `husky install` 会尝试重新创建 `.husky` 目录和钩子文件,你需要修改这个行为。你可以改为只在第一次设置 Husky 时运行 `husky install`,或者在 `prepare` 脚本中检查 `.husky` 目录是否存在,如果不存在再运行 `husky install`。不过,更常见的做法是直接移除 `prepare` 脚本中的 `husky install`,因为一旦 `.husky` 目录被版本控制,就不需要每次安装依赖时都重新安装 Husky。
"scripts": {
// 移除或注释掉 "prepare": "husky install"
}
3. **关于 `.husky` 文件夹内的文件数量**:
Husky 9 使用了新的配置方式,它可能会生成多个文件来管理不同的钩子。这是 Husky 9 的正常工作方式,与旧版本(如 Husky 4 或 5)只生成 `pre-commit` 和 `commit-msg` 文件不同。这些文件是 Husky 管理钩子所需的,你不需要手动修改它们。
4. **保持配置**:
一旦 `.husky` 目录和钩子文件被正确设置并添加到版本控制中,团队成员在克隆仓库并运行 `pnpm i` 后,这些钩子应该会自动生效,无需再次手动配置。
通过以上步骤,你应该能够解决每次安装依赖时 `.husky` 配置被重置的问题,并理解为什么 `.husky` 文件夹内会有多个文件。