老的前端项目引入Eslint,由于存量代码文件不能立即fix调整。此方案通过commit钩子配置仅校验改动的文件,实现改动才校验,不改动不校验的目标。
1. 将存量文件放入 .eslintignore
find src -name '*.js' -o -name '*.vue' >> .eslintignore
2. 通过commit钩子取消改动文件的ignore,并校验
在package.json中增加钩子触发配置,依赖npm包yorkie,Vue项目自带
{
"name": "your-project",
"gitHooks": {
"pre-commit": "bash ./pre-commit.sh"
}
}
3. 在项目根目录增加第2步中配置调用的处理脚本
file_eslint_ignore=.eslintignore
# 找出当前准备提交的文件
files=$(git status -s | grep -E '\.js$|\.vue$' | cut -d ' ' -f3)
[ -z "$files" ] && exit 0
# 从 .eslintignore 中删除改动的文件
for check_file in $files; do
match_line=$(grep -n "^${check_file}$" $file_eslint_ignore | cut -d ':' -f 1)
if [ -n "$match_line" ]; then
sed -i '' "$match_line d" $file_eslint_ignore
fi
done
# 对新增和修改文件进行检查
npx eslint $files && git add $file_eslint_ignore