为什么我的ESLint在GitHub Actions中检测到错误但构建还是通过了?
我给项目配置了ESLint,并在GitHub Actions里加了lint检查步骤。但今天提交了一个明显违反规则的代码(比如少了个分号),控制台确实输出了错误,但最后构建状态还是显示成功了。我检查了.eslintrc里的规则配置没问题,也确认工作流文件里执行了npm run lint,但就是无法让CI阻塞构建。错误信息里显示ESLint的exit code是0,这正常吗?
# GitHub Actions步骤片段
- name: Lint Check
run: npm run lint
之前本地跑npm run lint会直接报错退出,但CI环境就是不报错。难道需要额外配置ESLint的exit策略吗?
npm run lint脚本用了eslint .或类似命令却没报错,大概率是 CI 里用了--quiet或--max-warnings=0之类的参数被覆盖了,或者你的 lint 脚本里加了|| true。直接检查你
package.json里的lint脚本,比如:确保没加
|| true或--quiet,然后 GitHub Actions 里就直接用:本地和 CI 行为不一致?八成是 CI 用的 Node/npm 版本不同,或者
node_modules缓存了旧版本的 eslint,加个npm ci或npm install --no-fund重装试试。或者在GitHub Actions里强制检查退出码:
这两种方式都能让CI在有ESLint错误时正确退出,选一个用就行。