Codex Husky钩子最佳实践:Mac Git提交前自动Lint检查

2026-06-19阅读 0热度 0
Mac版Codex_Husky钩子配置:Git_Commit前自动触发Lint检查详解【技巧】

要想在Mac的Codex项目中,每次执行git commit前自动触发ESLint检查,Husky几乎是必备工具。但实际配置中容易踩坑——需要正确初始化Husky、搭配lint-staged、配置pre-commit钩子,还得处理Mac特有的权限问题、Shell兼容性以及nvm环境差异。下面把完整流程拆解开,每一步都附带容易忽略的实操细节。

简单说就是:每次git commit前自动校验代码规范,杜绝不合规的代码进入仓库。要做到这一点,关键在于让Husky成功加载并触发lint-staged的执行流程。

初始化Husky并启用钩子目录

打开终端,进入项目根目录,安装Husky:

npm install husky --save-dev

接着运行初始化命令:

npx husky init

这步会在项目根目录生成.husky文件夹,并自动向package.json添加prepare脚本。如果未自动生成,手动补一条:

npm set-script prepare "husky install"

切记一定要执行 npm run prepare——只有这一步才能真正激活钩子。否则.husky/pre-commit这些脚本Git根本不会识别,等于白做。

配置pre-commit钩子执行lint-staged

确保已经安装lint-staged

npm install lint-staged --save-dev

然后在package.json中添加lint-staged配置(非强制但强烈建议):

"lint-staged": { "src/**/*.{js,jsx,ts,tsx}": ["eslint --fix", "git add"] }

接下来创建pre-commit钩子:

npx husky add .husky/pre-commit "npx lint-staged"

此时.husky/pre-commit文件内容应是一段可执行的shell脚本:首行为#!/bin/sh,第二行为. "$(dirname "$0")/_/husky.sh"。如果缺少第二行,务必手动补上——否则在Mac系统下钩子很可能静默失效,连错误提示都没有。

验证Husky是否生效

配置完成后需要验证,这里有三种方法:

方法一:手动触发测试
修改一个JS文件,故意引入ESLint违规(比如删掉分号),然后执行:
git add . && git commit -m "test lint"

方法二:检查钩子是否注册成功
直接查看文件内容:
cat .husky/pre-commit
如果输出包含npx lint-staged,说明钩子已写入。

方法三:查看Git当前激活的钩子路径
执行:
git config --list | grep hook
如果输出显示core.hooksPath=.husky,表明Husky已完全接管Git的钩子系统。

解决Mac常见权限问题

Mac上跑Husky,最常见的翻车现场就是权限和Shell兼容性。三步搞定:

第一步:给钩子文件添加执行权限
chmod +x .husky/pre-commit

第二步:确认Shell环境兼容
Mac默认使用zsh,但部分旧版Husky生成的脚本以#!/bin/sh开头。若遇到/bin/sh: npx: command not found错误,将.husky/pre-commit第一行改成#!/bin/zsh即可。

第三步:绕过Node版本冲突(仅当使用nvm时)
如果通过nvm管理Node版本,钩子脚本可能找不到nodenpx。解决办法是在.husky/pre-commit顶部插入以下两行,加载nvm环境:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"

这样Husky就能在正确的Node版本下顺利运行lint-staged了。

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策