lint-staged:'git add' 命令的目的是什么

lint-staged: what the purpose of 'git add' command

最近我开始将 lint-staged 引入我的前端构建工具链。当我查看有关它的文档时,我总是发现它的工作方式如下:

"husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    },
"lint-staged": {
    "src/**/*.{js,jsx,ts,tsx,json,css}": [
      "prettier --write",
      "eslint --fix src/",
      "tslint --fix --project .",
      "git add"
    ]
  },

你可以在link中找到更多类似的用法:https://github.com/okonet/lint-staged

我的困惑点是最后一个命令git add,它的目的是什么?

我的理解是lint-staged只在git add之后和git commit之前验证暂存区的代码。所以无法理解为什么我们需要再添加一个git add

它使用 husky 在您提交之前挂钩一些操作。参见:https://github.com/typicode/husky

lint-staged 只是更改您的代码并使其 linting(它在 husky 提交之前运行)。更改后,需要重新添加以更新git index。您的更改将在您的提交中生效。

你不需要 git add 因为 lint-staged 10

From v10.0.0 onwards any new modifications to originally staged files will be automatically added to the commit. If your task previously contained a git add step, please remove this. The automatic behaviour ensures there are less race-conditions, since trying to run multiple git operations at the same time usually results in an error.

来源:https://github.com/okonet/lint-staged#v10