更漂亮没有预先运行。这在其他项目中使用相同的配置,所以我很困惑为什么这次不工作。
这是我的package.json文件的相关部分:
"scripts": {
"precommit": "lint-staged"
},
"lint-staged": {
"*.{js,json,css,scss,html,md}": [
"prettier --write",
"git add"
]
},
编辑。以下是相关的devDependencies:
"devDependencies": {
"husky": "^0.14.3",
"lint-staged": "^7.0.4",
"prettier": "1.12.0"
},
答案 0 :(得分:25)
2021 年
有时 husky
不会添加钩子,因此您需要使用简单的 hack 来添加它。
您需要先卸载 husky,然后再安装 V4
的 husky,因为它可以确保正确安装您的钩子,然后安装最新版本的 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
如果有时上述技巧不起作用,那么让我们将钩子添加到 husky 中,下面提到的方法仅在 V6
中使用,我展示了 husky
和 lint-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 :(得分:18)
对我来说,问题是通过卸载和安装较低版本来解决的
npm uninstall husky
npm install -D husky@4 //after this it will work
答案 2 :(得分:9)
在配置此脚本之前,您的husky软件包可能已经在node_modules中。尝试重新安装挂钩,即可运行
npm rebuild
或
yarn rebuild
它解决了我的问题。
答案 3 :(得分:8)
对于遇到此问题并使用 Husky 5 的任何人,不会自动安装挂钩。因此,您的 .git/hooks folder
中可能根本没有所需的钩子。您需要向 package.json 添加 postinstall
(推荐),或者在 npm 安装包后运行 npx husky install
。
或者只是降级到 Husky 4。如果像我一样,您正在从事商业项目并且不想成为 Husky 赞助商,那么您实际上必须这样做。
答案 4 :(得分:7)
您缺少依赖项:
npm install --save-dev prettier husky lint-staged
答案 5 :(得分:6)
我在这里尝试了很多解决方案,但最终组合成功了!
git config core.hooksPath
的输出。这应该不返回任何东西。如果它确实运行了,git config --unset core.hookspath
终于成功了!
答案 6 :(得分:3)
我认为您的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
。因为如果husky
与.git/hooks/pre-commit
或GHook
不同,PreCommit
会跳过对pre-commit
文件的修改。
您可以通过以下链接找到它。 https://github.com/typicode/husky/blob/master/src/installer/hooks.ts#L58
一种替代方法是使用yarn add --dev pre-commit
。
"scripts":{
...
},
"pre-commit":"lint-staged",
...
geoQuery.addGeoQueryEventListener(new GeoQueryEventListener() {
@Override
public void onKeyEntered(String key, final GeoLocation location) {
ListOnline usersOnlineList = new ListOnline(user.getBio(), user.getName(), user.getAvatarUrl(), user.getToken());
usersList.add(usersOnlineList);
usersAdapter.notifyDataSetChanged();
}
答案 7 :(得分:2)
重新安装哈士奇,现在似乎正在工作。感谢@ mpasko256的帮助!
答案 8 :(得分:1)
找出原因并使用上述解决方案浪费了数小时
阅读文档并避免使用谷歌搜索: 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
答案 9 :(得分:1)
在我的案例中,问题在于存在一些现有的钩子,husky
没有覆盖它们(更多信息here)。
只要把它放在这里,以防其他人遇到相同的问题。
答案 10 :(得分:1)
这在我身上发生,这些答案都无济于事。因此,为了将来参考,是因为我使用的是looks like it doesn't know how to properly execute husky中的npm@7
。
我之所以知道它是沙哑和npm的问题,是因为我发现pre-commit
目录中没有my-project/.git/hooks
文件。
当您安装赫斯基时,它会在这样的文件夹中自动为您做魔术。因此,我必须:
npm i -g npm@6
rm -rf node_modules package-lock.json && npm i
重新安装了所有内容(您应该在控制台中看到Husky的输出)npx mrm lint-staged
最后,它奏效了。
答案 11 :(得分:1)
对我来说,问题是我像官方网站上所说的那样运行了 npx mrm lint-staged ,但它只设置了 husky 和 lint-staged < / strong>在package.json中的配置。然后,它不会添加为依赖项或安装它们。
对我来说,解决方案是:
npm i -D沙哑绒毛阶段
npx mrm lint分段的
答案 12 :(得分:1)
我通过在命令开头添加 yarn
解决了我的问题。
(husky v6)
.husky/预提交
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn lint-staged
.husky/commit-msg
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn commitlint -e $HUSKY_GIT_PARAMS
答案 13 :(得分:0)
确保你安装了 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
此脚本将在您的工作目录中创建一个 .husky 文件夹,并使用脚本 npm run lint-fix 向其中添加预提交文件。
恭喜...现在您可以提交文件并查看预提交检查您的 eslint 错误(如果有)
您可以将以下行添加到您的 .git 忽略文件中
/.husky
答案 14 :(得分:0)
由于另一个原因,我遇到了同样的问题。刚刚将 HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun 设置为 cd \python。删除此“AutoRun”后,lint-staged 在预提交时运行,没有任何错误。
答案 15 :(得分:0)
请注意,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 - 在 package.json 中添加以下脚本 "pre-commit": "lint-staged"
7 - 添加您的 lint-staged 配置,例如
...
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx,json,css,scss,md}": [
"prettier --write"
]
}
...
答案 16 :(得分:0)
对我来说,问题是 pre-commit
钩子不可执行,但很容易修复:
chmod +x .husky/pre-commit
答案 17 :(得分:0)
对于 windows 用户,只需在命令行/bash 中执行以下操作:
set HUSKY_DEBUG = 1
或
set HUSKY_DEBUG = true
这解决了,我挠头的几个小时。
另见this
答案 18 :(得分:0)
万一它对其他人有帮助:另一种尝试是删除您的node_modules
文件夹并重新运行npm install
我最初在Windows 10计算机上的Linux子系统中运行npm install
。通过bash使用git可以正常工作。我切换到git in后收到错误
电源外壳。对于我来说,卸载和重新安装漂亮,沙哑和短绒的产品是不可行的。
我删除了自己的node_modules文件夹,并从Windows端重新运行npm install
,现在它可以正常工作了。
答案 19 :(得分:0)
我遇到了同样的问题,但是我犯了这个错误。
我在lint-staged
对象中添加了husky
对象,但后来意识到我需要在lint-staged
中将package.json
键值对添加为直接键值对>
"lint-staged": {
"*.{js,json,css,scss,html,md}": [
"prettier --write",
"git add"
]
答案 20 :(得分:0)
从 lint-stage v10 开始,不再需要 git add
命令。正如文档描述的那样,它会自动插入到提交中:
从 v10.0.0 开始,对原始暂存文件的任何新修改都将自动添加到提交中。如果您的任务以前包含 git add 步骤,请删除它。自动行为可确保减少竞争条件,因为尝试同时运行多个 git 操作通常会导致错误。
答案 21 :(得分:0)
请注意您使用的节点版本。赫斯基(Husky)要求节点> = 10,皮棉分步要求节点> = 10.13