我已经用 husky 设置了一个节点项目,但是当我的同事尝试npm install在他的 Mac 上运行时,他收到以下错误:
noa-be@1.0.0 prepare
husky install
sh: husky: command not found
npm ERR! code 127
npm ERR! path /Users/X/Desktop/Workspace/project
npm ERR! command failed
npm ERR! command sh -c husky install
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/X/.npm/_logs/2021-04-12T13_07_25_842Z-debug.log
Run Code Online (Sandbox Code Playgroud)
这些是相关的 package.json 部分:
noa-be@1.0.0 prepare
husky install
sh: husky: command not found
npm ERR! code 127
npm ERR! path /Users/X/Desktop/Workspace/project
npm ERR! command failed
npm ERR! command sh -c …Run Code Online (Sandbox Code Playgroud) 我在我的项目中配置了哈士奇。它正在使用“lint-staged”运行预提交挂钩,以便在每次提交之前使用“prettier”格式化代码。当我使用终端调用git commit.
但是,如果我使用 VS Code 源代码控制面板来提交文件,它只会提交而不运行预提交挂钩。我正在使用 Windows 10。预提交文件:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx "lint-staged"
Run Code Online (Sandbox Code Playgroud)
package.json 表示“lint-staged”
"lint-staged":{
"*.{js,json,css,md}": [
"prettier --write"
]
}
Run Code Online (Sandbox Code Playgroud)
vscode 源码控制面板
如何解决这个问题,以便每次调用 git commit 时调用预提交挂钩,尽管它来自 vscode?
TLDR:git rev-parse -q --verify MERGE_HEAD不处于合并状态时会出错。当我们处于合并状态时,如何获得会出错的类似命令?
问题:当我将 master 合并到我的分支并且它存在冲突时,我必须手动更正它们,然后提交。但在某些情况下,我有太多来自 master 的更改,所以我宁愿跳过预提交挂钩。
部分解决方案:我可以运行git commit --no-verify并合并内容,但那是因为我知道该标志。其他开发人员可能不知道这一点,因此(1)他们花费了比需要更多的时间来等待预提交挂钩运行,并且(2)因为这可能需要很长时间,他们往往不太可能重新合并主节点(假设) 。
几乎确定的解决方案:我找到了一种通过使用 来检测我是否处于合并状态的方法git rev-parse -q --verify MERGE_HEAD。当处于合并状态时,它返回一个哈希值,当不处于合并状态时,它会出错。但我需要的恰恰相反。当我处于合并状态时,我需要它出错,因此我可以将它作为预提交挂钩添加到我的所有挂钩中。这会使他们在第一行失败,然后不执行以下命令。
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.js": [
"git rev-parse -q --verify MERGE_HEAD",
"eslint --max-warnings 0 --fix"
],
"*.scss": [
"git rev-parse -q --verify MERGE_HEAD",
"stylelint 'app/**/*.scss'"
],
"*.{js,json,yml,scss,md}": [
"git rev-parse -q --verify MERGE_HEAD",
"prettier --write"
],
"*": [
"bundle exec rubocop --auto-correct --force-exclusion"
]
}, …Run Code Online (Sandbox Code Playgroud) 推送React本机项目时,由于沙哑的预推失败,我遇到了错误
沙哑>推前挂钩失败(添加--no-verify以绕过)
显示的所有这些错误都是像下面这样的皮棉错误
unused-vars
27:48 error Trailing spaces not allowed
no-trailing-spaces
75:5 warning Unexpected console statement
no-console
92:93 error Unexpected trailing comma
comma-dangle
96:81 error Unexpected trailing comma
Run Code Online (Sandbox Code Playgroud)
如何在Mac上的Sourcetree应用程序上将其关闭?
我按照许多其他项目安装了(在 Mac OS11 上)husky@4。lint-staged终端命令流程git add .和git commit -m 'something'流程工作正常:Husky 的预提交挂钩和lint-staged命令已成功获取。然而,Github Desktop 预提交挂钩似乎没有表现。
我尝试查看该文件.git/hooks/pre-commit,它就在那里:
#!/bin/sh
# husky
# Created by Husky v4.3.8 (https://github.com/typicode/husky#readme)
# At: 3/7/2021, 12:09:26 PM
# From: /Users/admin/devProj/prject/node_modules/husky (https://github.com/typicode/husky#readme)
. "$(dirname "$0")/husky.sh"
Run Code Online (Sandbox Code Playgroud)
命令:
...
"husky": "^4.3.8",
"lint-staged": "^10.5.4",
...
"husky": {
"hooks": {
"pre-commit": "tsc --noEmit && lint-staged"
}
},
"lint-staged": {
"**/*.(js|jsx|ts|tsx)": [
"npm run lint:fix",
"prettier --write"
]
}
Run Code Online (Sandbox Code Playgroud)
GitHub Desktop 找不到此内容的任何其他原因吗?
我正在使用 husky 来运行 git hooks。
"husky": {
"hooks": {
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
}
Run Code Online (Sandbox Code Playgroud)
我想防止直接提交到主分支。它应该允许仅通过合并请求更新主分支。
我从 Git 中发现了以下代码: Prevent commits in masterbranch。我将其复制到 .git/hooks/pre-commit 并且它有效
#!/bin/sh
branch="$(git rev-parse --abbrev-ref HEAD)"
if [ "$branch" = "master" ]; then
echo "You can't commit directly to master branch"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
但我想用哈士奇来实现这一点。我怎么做?
我们有一个带有文件夹结构的企业应用程序,如下所示:
/项目
.git
/ sub1
... Java项目
/ sub2
package.json
... Javascript Backbone专案
/ sub3
... Java项目
/ sub4
... Java项目
/ sub5
package.json
... JavaScript React项目
目前,我在sub2和sub5项目中都设置了Husky,这会引起冲突(每次切换项目时都需要安装npm)。另外,Java开发人员报告说,当他们在项目sub1,sub3和sub4中提交代码时,正在执行Husky git钩子。
如果您在提交时位于某个文件夹中,是否只能运行挂钩?
当我执行git commit -m "commit message"命令时,lint-staged 显示此错误:
我在 package.json 中的配置:
"husky": {
"hooks": {
"pre-commit": "npm run validate && lint-staged"
}
},
"lint-staged": {
"*.+(js|ts|tsx)": [
"eslint"
],
"**/*.+(js|json|ts|tsx)": [
"prettier --write"
]
},
Run Code Online (Sandbox Code Playgroud)
它在mac上运行良好,但windows-10显示此错误。谁能告诉我windows出了什么问题?
git-husky ×10
git ×8
husky ×7
lint-staged ×3
githooks ×2
node.js ×2
angular ×1
docker ×1
git-commit ×1
npm ×1
prettier ×1
react-native ×1