husky 的配置,配置过什么

发布时间:2026/7/16 10:37:54

husky 的配置,配置过什么 如果面试官问“Husky 配置过什么”不要只回答“配过pre-commit”。最好按“做过什么 为什么这么做 配置示例”来答。一、先给一个简洁版回答我配置过 Husky主要是用来做 Git 提交前的自动校验。比较常见的是pre-commit提交前执行lint-staged只检查暂存区文件commit-msg配合commitlint校验提交信息格式有些项目也配过pre-push推送前跑测试或构建检查这样可以把代码规范、提交规范和一部分质量校验前置避免不规范代码进入仓库。这段已经比较像面试回答了。二、Husky 是干什么的你可以先补一句定义Husky 本质上是用来管理Git Hooks的工具可以在git commit、git push等操作前后自动执行脚本。比如常见场景提交前跑 ESLint提交前跑格式化提交信息校验推送前跑单元测试三、我常配的几个 Hook1.pre-commit这是最常见的。用途在执行git commit之前自动检查代码。我一般会配合lint-stagedeslintprettier有时也会加stylelint为什么要配lint-staged因为不需要全量检查整个项目只检查暂存区文件速度更快。示例npx husky add .husky/pre-commit npx lint-stagedpackage.json{ lint-staged: { *.{js,ts,vue}: [ eslint --fix, prettier --write ], *.{css,scss,less}: [ stylelint --fix, prettier --write ] } }面试表达我配置过pre-commit主要是结合lint-staged对暂存区文件执行eslint --fix和prettier --write这样既能保证提交代码质量也不会因为全量检查导致提交太慢。这句很加分。2.commit-msg这个也很常见。用途校验 commit message 是否符合规范。比如要求feat: 新增登录功能fix: 修复列表分页问题docs: 更新文档常配工具commitlintcommitlint/config-conventional示例安装npm install commitlint/config-conventional commitlint/cli -Dcommitlint.config.jsmodule.exports { extends: [commitlint/config-conventional] }配置 hooknpx husky add .husky/commit-msg npx --no-install commitlint --edit $1面试表达我也配过commit-msg结合commitlint做提交信息校验统一团队的 commit message 规范方便后续生成 changelog 和排查历史变更。3.pre-push这个不是每个项目都配但说出来会更完整。用途推送代码前做进一步检查。常见内容单元测试类型检查构建校验示例npx husky add .husky/pre-push npm run test或者npx husky add .husky/pre-push npm run type-check npm run test面试表达对于要求比较严格的项目我也会在pre-push里加测试或类型检查避免明显问题被推到远程仓库。不过这类校验我会控制执行时间避免影响开发效率。这个回答体现你考虑了工程效率。四、我实际项目里常见的一套配置你可以把它总结成一套工程化方案。典型组合Husky管理 Git hookslint-staged只处理暂存文件ESLintJS / TS / Vue 代码规范检查Prettier代码格式化Stylelint样式规范检查Commitlint提交信息校验安装示例npm install husky lint-staged prettier eslint -D npm install commitlint/cli commitlint/config-conventional -D初始化 huskynpx husky install如果是新版本常见也会在package.json加{ scripts: { prepare: husky } }package.json示例{ scripts: { prepare: husky, lint: eslint . --ext .js,.ts,.vue, format: prettier --write . }, lint-staged: { *.{js,ts,vue}: [ eslint --fix, prettier --write ], *.{json,md,css,scss,less}: [ prettier --write ] } }.husky/pre-commitnpx lint-staged.husky/commit-msgnpx --no-install commitlint --edit $1五、为什么不用在 CI 里做为什么还要 Husky这是一个很好的加分点。你可以说Husky 和 CI 不是替代关系而是前后两道关。Husky 是把问题前置到开发者本地在提交阶段就拦住明显问题CI 是在远程做更完整、更严格的校验。这样既能减少无效提交也能减轻 CI 反复失败带来的沟通成本。六、实际使用中踩过什么坑如果面试官喜欢问实战这里很好用。1. 不要在pre-commit里跑全量 lint如果项目大提交会很慢。更合理做法pre-commit跑lint-staged全量校验放到 CI 或手动执行面试表达我一般不会在pre-commit里跑全量检查而是只检查 staged 文件否则会明显拖慢提交效率。2. 不要在 hook 里做过重的任务比如全量 build、超长测试。否则大家可能会绕过 hookgit commit --no-verify面试表达Hook 的目标是提高质量而不是阻碍开发所以我会控制执行时长把轻量检查放本地重任务放 CI。3. 团队里要统一 Node / 包管理器环境否则可能有人本地 hook 执行失败。4. 处理自动修复后的二次提交问题lint-staged一般会自动把修复后的文件重新 add但配置要正确否则可能出现“修了但没提交进去”。七、面试里怎么说“我配过什么”推荐你按下面这个结构答我配置过 Husky主要用于 Git 提交阶段的代码质量控制。最常用的是pre-commit和commit-msg。在pre-commit里我一般配合lint-staged对暂存区文件执行eslint --fix、prettier --write有样式文件的话也会加stylelint在commit-msg里会接commitlint统一提交信息格式比如feat、fix这些规范前缀。有些要求更严格的项目我也配置过pre-push在推送前跑测试或者类型检查。整体上我的思路是本地 hook 做轻量快速校验CI 做完整校验这样既能保证质量也不会影响开发效率。这段非常适合面试直接说。八、如果面试官追问“怎么配置的”你可以直接答1. 安装npm install husky lint-staged -D npm install commitlint/cli commitlint/config-conventional -D2. 初始化npm pkg set scripts.preparehusky npm run prepare3. 添加 hooksnpx husky add .husky/pre-commit npx lint-staged npx husky add .husky/commit-msg npx --no-install commitlint --edit $14. 配置 lint-staged{ lint-staged: { *.{js,ts,vue}: [ eslint --fix, prettier --write ] } }5. 配置 commitlintmodule.exports { extends: [commitlint/config-conventional] }九、30 秒回答版我配置过 Husky主要是配 Git hooks 做提交前校验。最常见的是pre-commit和commit-msgpre-commit里配合lint-staged只检查暂存区文件执行eslint --fix、prettier --writecommit-msg里配合commitlint校验提交信息格式。有些项目也会加pre-push做测试或类型检查。我一般会把本地 hook 设计得轻量一些重检查放到 CI兼顾质量和效率。十、一句话总结我配 Husky 主要是做pre-commit代码规范校验、commit-msg提交规范校验必要时加pre-push测试校验。

相关新闻