mac版codex项目需通过husky在git commit前自动执行eslint检查,须初始化husky、配置lint-staged、设置pre-commit钩子,并解决mac权限、shell兼容性及nvm环境问题。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Mac版Codex项目中需要在每次Git Commit前自动执行代码规范检查,避免不符合ESLint规则的代码被提交到仓库,必须让Husky正确加载并触发lint-staged流程。
初始化Husky并启用钩子目录
打开终端,进入Codex项目根目录,执行:
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 "
此时.husky/pre-commit文件内容应为可执行shell脚本,首行是#!/bin/sh,第二行是. "$(dirname "$0")/_/husky.sh"。若缺失该行,手动补上——否则Mac系统下钩子可能静默失败。
")/_/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常见权限问题
第一步:给.husky/pre-commit添加执行权限
chmod +x .husky/pre-commit
第二步:确认Shell环境兼容性
Mac默认zsh,而部分旧版Husky生成的脚本以#!/bin/sh开头。若遇到/bin/sh: npx: command not found错误,把.pre-commit第一行改为#!/bin/zsh
第三步:绕过Node版本冲突(仅当使用nvm时)
在.husky/pre-commit顶部插入:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"











