即使对于单个更改的文件,运行“lint-staged”也会花费大量时间

rb2*_*b27 5 javascript eslint lint-staged

即使只更改了一个文件,运行npm run pre-commit也会花费大量时间。

package.json脚本: "pre-commit": "lint-staged",

和 lint 阶段命令:

  "lint-staged": {
    "src/**/*.{ts,js,json}": [
      "eslint \"{src,apps,libs,test}/**/*.ts\" --fix"
    ],
    "src/**/*.{js,ts,json}": [
      "prettier --write \"src/**/*.ts\" \"test/**/*.ts\""
    ]
  },
Run Code Online (Sandbox Code Playgroud)

感觉eslint在整个项目中运行,如何才能使其只在更改的文件中运行?

小智 3

您要求 eslint (和 prettier)通过提供 glob 来运行整个代码库。如果您跳过 glob,则每个将仅在 lint-staged 匹配的文件上运行。

  "lint-staged": {
    "src/**/*.{ts,js,json}": [
      "eslint --fix"
    ],
    "src/**/*.{js,ts,json}": [
      "prettier --write"
    ]
  },
Run Code Online (Sandbox Code Playgroud)

您可以通过组合操作来使这一点变得更好。由于它们都在完全相同的文件集上运行,因此将它们放入数组中按顺序运行操作并防止两个操作之间发生冲突。

  "lint-staged": {
    "src/**/*.{ts,js,json}": [
      "eslint --fix", "prettier --write"
    ],
    "test/**/*.{js,ts,json}": [
      "prettier --write"
    ]
  },
Run Code Online (Sandbox Code Playgroud)