在nextjs项目中使用git hooks,选择了husky
安装
npm i husky -D
# 或者
yarn add husky -D
配置
npx husky install
执行完成之后会在项目根目录下自动生成 .husky文件夹
然后在.husky文件夹下创建一个 pre-commit 文件;
该文件在git commit 的时候会自动执行
#!/bin/sh
echo 'lint start -------------'
# 先执行一次 eslint --fix
npm run lint
# 获取当前提交的所有文件名
STAGE_FILES=$(git diff --cached --name-only -- '*')
echo $STAGE_FILES
# 如果在 eslint --fix 中有被fix的文件 则再次 add 到暂存区
git add $STAGE_FILES
# 执行 eslint 检测是否有不能被fix的代码
eslint_output=$(npx next lint)
# 如果有 errors 需要手动修改并且中止commit
if [ $? -ne 0 ]; then
echo "ESLint has detected errors. Please fix them before committing."
exit 1
fi
# 没有 errors 则commit
exit 0
packge.json
{
"scripts": {
"lint": "next lint --fix",
"prepare": "npx husky install && chmod +x .husky/pre-commit"
},
}
"prepare": "npx husky install && chmod +x .husky/pre-commit"prepare是在开发人员进行依赖安装完成之后自动执行的钩子函数,具体作用是执行husky安装, 并且给 pre-commit文件赋予可执行权限(windows下不需要赋权这一步骤)
其他问题
packge.json中的husky配置不生效
试过降低版本到4.3.x 还是不起作用;
lint-stage不生效
nextjs@13 下没生效,所以还是用了next lint这个命令