husky+lint-staged 可以运行在未暂存的文件上。

11

我想添加一个 pre-commit Git 钩子,只对被修改过(暂存)的文件运行代码检查。我的项目基于 Create React App。

我将以下内容添加到我的 package.json 文件中:

  "scripts": {
    "lint": "eslint 'src/**/*.js'",
    "lintfix": "eslint 'src/**/*.js' --fix"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*": ["npm run lintfix --", "git add"]
  }

我将其运行在 "*" 上的原因是因为我希望脚本本身(lintfix)执行其配置(src/**/*.js)。

问题是,我正在整个代码库上收到大量的 eslint 错误,而不仅仅是我所希望的分段文件上。

我需要的配置是仅在我的 eslint 运行时针对分段文件。

1个回答

11

来自 lint-staged readme.md

{ "*": "your-cmd" }

This config will execute your-cmd with the list of currently staged files passed as arguments.

So, considering you did git add file1.ext file2.ext, lint-staged will run the following command:

your-cmd file1.ext file2.ext

因此,查看您的package.json,您正在运行以下内容:

eslint 'src/**/*.js' --fix file1.js file2.js file3.js fileX.js... ....

你需要将npm run lintfix --替换为eslint --fix,先测试一下是否可行(应该是可以的),然后调整你的lintfix命令,去掉通用的src/**/*.js正则表达式。

1
我的eslint配置运行prettier,当运行lint-staged时,它会在所有文件上运行,而不仅仅是暂存的文件。 - Joseph Chambers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接