eslint - 在暂存文件上运行 eslint "ONLY"

标签 eslint pre-commit-hook eslint-config-airbnb husky lint-staged

我正在尝试使用预提交 Hook 在提交发生之前检测 eslint 错误。我正在使用 husky 和 ​​lint-staged。但它对 src 中的所有文件运行 lint 命令,而不是仅对暂存文件运行。这是我的 package.json 文件。

"scripts": {
    "test:ci": "cross-env CI=true react-scripts test --bail --passWithNoTests",
    "lint": "eslint src/**/*.{js,jsx}",
    "lint:fix": "eslint . --fix",
    "precommit": "npm run lint && npm run test:ci"
  }
"husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
"lint-staged": {
    "*.js": [
      "npm run precommit"
    ],
    "*.jsx": [
      "npm run precommit"
    ]
  }

有什么办法让它只适用于暂存文件而不适用于目录中存在的其他文件?

最佳答案

据此lint-staged example ,我实现了,为了只检查暂存文件(大约需要 5 秒),除非有超过 5 个暂存文件,它会检查所有 repo(可能需要超过 1 分钟):

  • 升级lint-staged打包到最新版本
  • 添加 .lintstagedrc.js文件在你的 repo 的根目录。它可能包含如下内容:

  • module.exports = {
      '**/*.js?(x)': (filenames) =>
        filenames.length > 5 ? 'eslint --ext .js,.jsx . --ignore-path .gitignore --fix .' : `eslint ${filenames.join(' ')} --fix`,
      "*.json": [
        "prettier --write"
      ]
    }
    
  • package.json 中删除旧的“lint-staged”命令文件
  • 关于eslint - 在暂存文件上运行 eslint "ONLY",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62425452/

    相关文章:

    git - 我可以为 git 使用脚本化提交模板吗?

    javascript - 在项目的子文件夹中为 eslint 使用不同的可共享配置

    javascript - ESLint - Airbnb 可以安装在 Ubuntu 16.04 Sublime Text 3 上吗

    javascript - JetBrains WebStorm 自动格式与 ESLint 规则无大小写声明冲突

    java - 是否有适用于 android 的可配置预提交 Hook 解决方案?

    git - Git预提交钩子(Hook)+ docker =不同的git状态

    javascript - ESLint : Spacing around equal sign

    eslint - 如何在我的 React linter 中修复 "Typo in declared prop type: title"?

    javascript - 无法在 react 组件中定义箭头方法

    meteor - "Resolve error: unable to load resolver "节点 ""