---
title: 命令行中的自动修复
---

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

我们添加一段可自动修复的问题代码（如果在 VS Code 里添加，保存时会自动修复，所以用 CLI 来添加）：

```bash
echo ';' >> src/App.jsx
```

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

提交代码：

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

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

手动把参数 a 的问题修复（删除 a），再次添加 ';'，提交代码：

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

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

:::info 注
在真实项目的开发中，对于以下情况，可以在提交时增加 -n 或 --no-verify 参数，破例跳过准入检查：
1. Hotfix
2. merge 过程中解决了冲突，变更的文件里包含别人的代码
3. 旧项目迁移到 Modern.js，最初做统一自动修复的提交
:::

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

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

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

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

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

:::info 注
Modern.js 是用 [Modern Lint](/docs/guides/usages/eslint) 规则集来实现上述能力， 集成了 ESLint、TypeScript 支持、Prettier 等主流工具和最佳实践。
:::

---

> 本章节的代码可以在[这里查看](https://github.com/modern-js-dev/modern-js-examples/tree/main/tutorials/c03/hello-modern)。

