【问题标题】:husky+lint-staged runs on unstaged fileshusky+lint-staged 在非暂存文件上运行
【发布时间】:2023-03-03 21:17:01
【问题描述】:

我正在尝试添加一个预提交 git 钩子,它将仅在触摸(暂存)文件上运行我的 linter。我的项目基于 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 需要什么配置?

【问题讨论】:

    标签: node.js reactjs eslint githooks


    【解决方案1】:

    来自 lint-staged readme.md

    { "*": "your-cmd" }
    

    此配置将使用当前暂存的列表执行your-cmd 作为参数传递的文件。

    所以,考虑到你做了 git add file1.ext file2.ext,lint-staged 将 运行以下命令:

    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 以首先测试它是否有效(它应该),然后在没有通用 src/**/*.js 正则表达式的情况下调整您的 lintfix 命令。

    【讨论】:

    • 我的 eslint 配置运行起来更漂亮,运行 lint-staged 时它会在所有文件上运行,而不仅仅是暂存文件。
    猜你喜欢
    • 2020-08-18
    • 2022-08-21
    • 2019-08-22
    • 1970-01-01
    • 2019-11-05
    • 2023-01-29
    • 2020-01-06
    • 2021-05-12
    • 2021-06-11
    相关资源
    最近更新 更多