未在预提交上运行 lint-stage

更漂亮的不是在提前提交的情况下运行。这种方法在其他项目中也可以使用相同的配置,所以我很困惑为什么这次不能使用它。

这是 package.json 文件的相关部分:

"scripts": {
"precommit": "lint-staged"
},
"lint-staged": {
"*.{js,json,css,scss,html,md}": [
"prettier --write",
"git add"
]
},

编辑。下面是相关的依赖项:

"devDependencies": {
"husky": "^0.14.3",
"lint-staged": "^7.0.4",
"prettier": "1.12.0"
},
134152 次浏览

重新安装哈士奇,现在似乎是工作。谢谢@mpasko256为您的帮助!

你缺少依赖关系:

npm install --save-dev prettier husky lint-staged

如果它帮助其他人: 另一件事是尝试删除您的 node_modules文件夹,并重新运行 npm install

I originally ran npm install in the linux subsystem on my Windows 10 machine. Everything worked fine using git through bash. I received the error after switching over to git in 卸载和重新安装更漂亮、更结实、更有弹性的软件对我来说不起作用。

我删除了 node _ module 文件夹,从 Windows 端重新运行 npm install,现在它可以工作了。

我也有同样的问题,但我犯了这个错误。

我已经在 husky对象中添加了 lint-staged对象,但后来意识到我需要在 package.json中添加 lint-staged键值对作为直接键值对

"lint-staged": {
"*.{js,json,css,scss,html,md}": [
"prettier --write",
"git add"
]

在我的例子中的问题是,有一些现有的钩子和 husky不覆盖它们(更多信息 给你)。

只是放在这里,以防其他人也遇到同样的问题。

对我来说,问题是我运行“ Npx mmlint-舞台”如官方网站所说,但它只设置 强壮皮棉做的配置 package.json。它不会作为依赖项添加或安装它们。

我的解决办法是:

  1. npm i -D husky lint-staged

  2. npx mrm lint-staged

请注意您正在使用的节点版本。Husky 需要 node > = 10,lint 分段需要 node > = 10.13

在配置此脚本之前,您的 node_modules中可能已经包含了您的哈士奇软件包。尝试重新安装钩子,您可以运行:

npm rebuild

如果 你在用毛线:

npm rebuild --update-binary

解决了我的问题。

我觉得你的 package.json有点问题。

"scripts":{
...
},
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"pre-push": "npm test"
}
},
"lint-staged": {
"*.ts": ["tslint", "prettier --write", "git add"]
}

顺便说一下,安装 husky后,只需检查 .git/hooks/pre-commit内容。如果里面没有像 husky这样的单词,只需删除 .git/hooks/pre-commit文件并重新安装 husky或运行 npx husky。因为如果 .git/hooks/pre-commit文件与 GHookPreCommit不同,husky将跳过修改 .git/hooks/pre-commit文件。

你可透过以下连结找到答案。 https://github.com/typicode/husky/blob/master/src/installer/hooks.ts#L58

一种替代方法是使用 pre-commit

yarn add --dev pre-commit
"scripts":{
...
},
"pre-commit":"lint-staged",
...

这种事情发生在我身上,这些答案都没有帮助。所以为了以后的参考,这是因为我使用的是 npm@7,其中 看来它不知道怎么正确处理哈士奇

我发现 Husky 和 npm 存在问题的方法是,我发现在 my-project/.git/hooks目录中没有 pre-commit文件。

当你安装“哈士奇”时,它会自动在这个文件夹中为你施展魔法。所以,为了做到这一点,我必须:

  1. 降至 npm i -g npm@6
  2. 确保所有东西都是用 rm -rf node_modules package-lock.json && npm i重新安装的(您应该在控制台中看到 Husky 输出)
  3. 虽然它不是真正需要的,我再次执行 npx mrm lint-staged

终于成功了。

在 lint-stage v10之后,不再需要 git add命令。按照文档的描述,它会自动插入到提交中:

从 v10.0.0开始,对原始暂存文件的任何新修改都将自动添加到提交中。如果您的任务以前包含一个 git 添加步骤,请删除此。自动行为确保了竞态条件的减少,因为试图同时运行多个 git 操作通常会导致错误。

Https://github.com/okonet/lint-staged#configuration

对于任何有这个问题和使用哈士奇5,钩子不会自动安装。所以你可能根本没有在你的 .git/hooks folder所需要的钩子。您需要向 package.json (推荐)添加一个 postinstall,或者在 npm 安装包之后运行 npx husky install

enter image description here

或者直接降级到哈士奇4。如果你像我一样,正在做一个商业项目,不想成为哈士奇的赞助商,你就必须这么做。

enter image description here

Https://dev.to/typicode/what-s-new-in-husky-5-32g5

For me the issue was resolved by uninstalling and installing lower version

npm uninstall husky


npm install -D husky@4          //after this it will work

Make sure you installed husky

将以下脚本添加到 package.json 脚本

"prepare": "husky install && npx husky add .husky/pre-commit \"npm run lint-fix\"",
"lint": "eslint ./",
"lint-fix": "eslint ./ --fix"

你的剧本将会是这样的

"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"prepare": "husky install && npx husky add .husky/pre-commit \"npm run lint-fix\"",
"lint": "eslint ./",
"lint-fix": "eslint ./ --fix",
"format": "prettier --write \"**/*.{js,jsx,json,md}\""
},

运行以下命令

npm run prepare

此脚本将创建一个。运行 lint-fix 到你的工作目录中,并添加预提交文件。

恭喜... 现在您可以提交您的文件,并看到预提交检查您的 eslint 错误,如果有

您可以将下面的代码行添加到您的. git 忽略文件中

/.husky

2021年

有时候,由于 husky没有添加钩子,所以您需要使用一个简单的方法添加它。

您需要卸载哈士奇之后,安装 V4的哈士奇,因为它确保您的钩子是正确安装,并在此之后,安装最新版本的 husky,以便您得到最新的更新。

NPM

npm uninstall husky


npm install -D husky@4


npm install -D husky

纱线

yarn remove husky


yarn add -D husky@4


yarn add -D husky

如果有时上面的伎俩不工作,所以让我们添加到哈士奇钩,下面提到的方法只用于 V6和我显示的 huskylint-staged的例子。

NPM

npm install -D husky


npm set-script prepare "husky install" && npm run prepare


npx husky add .husky/pre-commit "npx lint-staged"


git commit -m "added husky and lint-stagged" // here you will notice the lint-staged checking the files with help of husky

纱线

yarn add -D husky


npm set-script prepare "husky install" && yarn prepare


npx husky add .husky/pre-commit "yarn lint-staged"


git commit -m "added husky and lint-stagged" // here you will notice the lint-staged checking the files with help of husky

我在这里尝试了这么多的解决方案,但是一个组合最终工作!

  1. Make sure Husky v4 is installed. v6 was never triggering for me.
  2. 检查 git config core.hooksPath的输出。这应该 没有返回任何东西。如果它运行,
git config --unset core.hookspath

And FINALLY it worked!

对于 视窗用户,只需在命令行/bash 中执行以下操作:

set HUSKY_DEBUG = 1

或者

set HUSKY_DEBUG = true

这个问题解决了,我头疼了好几个小时。
Also see this

我通过在命令开头添加 yarn解决了这个问题。 (哈士奇 v6)

。沙哑/预先承诺

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"


yarn lint-staged

。哈士奇/承诺 -msg

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"


yarn commitlint -e $HUSKY_GIT_PARAMS

对我来说,问题在于 pre-commit挂钩不可执行,而且很容易修复:

chmod +x .husky/pre-commit

打破常规

请注意,在 5x >版本中发生了重大变化。

如果您正在努力让它工作,这里是我如何让 Husky(v6)与 lint-staged工作。

假设您已经安装了它 ,否则就跳到步骤3。

1-yarn remove husky

2-yarn add -D husky

3-husky install

4-husky add .husky/pre-commit "pre-comit"

5-chmod a+x .husky/pre-commit

6-在 包裹 Json中添加以下脚本 "pre-commit": "lint-staged"

7-添加 皮棉做的配置,例如

...
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx,json,css,scss,md}": [
"prettier --write"
]
}
...

我有同样的问题还有另一个原因。刚刚将 HKEY _ CURRENT _ USER 软件 Microsoft 命令处理器 AutoRun 设置为 cd python。在删除这个“ AutoRun”之后,lint-stage 在预提交时运行,没有任何错误。

在找出原因和使用上述解决方案上浪费时间

阅读文档,避免使用 google : Https://typicode.github.io/husky/#/?id=automatic-recommended

或按照以下步骤:

Husky-init 是一个一次性命令,用于快速初始化带有 husky 的项目。

npx husky-init && npm install       # npm
npx husky-init && yarn              # Yarn 1
yarn dlx husky-init --yarn2 && yarn # Yarn 2

按照@typecode 的消息 给你:

I suspect it's because npm run modifies PATH to include node_modules/.bin. On the other side, when hook commands are run PATH isn't modified.

If you change your .husky/pre-commit to include this path, it works with husky@latest:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"


node_modules/.bin/lint-staged

你也可以使用 提前承诺库。你不必配置任何东西,它的工作原理就像魅力。

如何使用 something

{
"name": "437464d0899504fb6b7b",
"version": "0.0.0",
"description": "ERROR: No README.md file found!",
"main": "index.js",
"scripts": {
"test": "echo \"Error: I SHOULD FAIL LOLOLOLOLOL \" && exit 1",
"foo": "echo \"fooo\" && exit 0",
"bar": "echo \"bar\" && exit 0"
},
"pre-commit": [
"foo",
"bar",
"test"
]
}

谢谢,这个我喜欢

npm install -D husky
npm set-script prepare "husky install" && npm run prepare
npx husky add .husky/pre-commit "npx lint-staged"
git commit -m "added husky and lint-stagged"