跳转到主文档

命令行中的自动修复

提交前的自动准入检查,跟 VS Code 里的保存一样,会尽可能自动格式化代码和修复问题,只有遇到无法自动修复的问题,才会报错阻止提交。

我们添加一段可自动修复的问题代码(如果在 VS Code 里添加,保存时会自动修复,所以用 CLI 来添加):

echo ';' >> src/App.jsx

打开 App.jsx,可以看到末尾多了一个 ';',有问题提示。

提交代码:

git commit -am "test: 再次测试准入检查"
git status

可以看到虽然仍然提交失败,但新增的问题被自动修复了。

手动把参数 a 的问题修复(删除 a),再次添加 ';',提交代码:

echo ';' >> src/App.jsx
git commit -am "test: 再次测试准入检查"
git log HEAD --stat --graph --name-status

可以看到提交成功了,新增的问题被自动修复,并且自动被 stage。

在真实项目的开发中,对于以下情况,可以在提交时增加 -n 或 --no-verify 参数,破例跳过准入检查:

  1. Hotfix
  2. merge 过程中解决了冲突,变更的文件里包含别人的代码
  3. 旧项目迁移到 Modern.js,最初做统一自动修复的提交

提交前的自动准入检查,只会检查和修复这次提交中有变更的文件(已经 stage 的文件),也就是说,只会强制要求这次工作过程中修改过的文件没有问题,不会要求你去解决这次工作无关的文件的问题。

如果要对整个仓库的所有文件做 lint 检查和自动修复,可以手动执行 lint 命令,比如:

echo ';' >> src/App.jsx
pnpm run lint

上述命令速度慢,不常用。旧项目刚迁移到 Modern.js 框架的时候,可以用这个命令对所有代码做一次自动修复,单独提交。

本章节中,我们完成了编程环境的初始化和检查,熟悉了相关功能。下一章节开始,我们就可以开始写代码了。

Modern.js 是用 Modern Lint 规则集来实现上述能力, 集成了 ESLint、TypeScript 支持、Prettier 等主流工具和最佳实践。


本章节的代码可以在这里查看