如何 运行 仅在子目录中预提交 husky
How to run husky pre-commit in child directory only
我们有一个具有如下文件夹结构的企业应用程序:
/项目
.git
/sub1
...Java 项目
/sub2
package.json
...Java脚本Backbone项目
/sub3
...Java 项目
/sub4
...Java 项目
/sub5
package.json
...Java脚本 React 项目
我目前在 sub2 和 sub5 项目中都设置了 Husky,这会导致冲突(每当我切换项目时都需要 npm install)。此外,Java 开发人员报告说,当他们在项目 sub1、sub3 和 sub4 中提交代码时,会执行 Husky git 挂钩。
如果提交时在某个文件夹中,是否可以只使用钩子运行?
Is it possible to only have the hooks run if you are IN a certain folder when you commit?
不,但是 挂钩本身 可以确定 它在 中的目录时 运行。这没有正确记录,但是 GIT_PREFIX
在 Git chdir
-s 之前的环境中设置到 $GIT_WORK_TREE
或 $GIT_DIR
目录。 (从 Git 版本 1.7.8 开始就是这种情况。)
我遇到了同样的问题。我通过在主目录中安装 husky 来修复它。
我的设置:
/project
.git
package.json
/frontend
package.json
/frontend-admin
package.json
在/project/package.json
中:
{
"license": "MIT",
"version": "0.0.1",
"private": true,
"scripts": {
"frontend": "cd frontend && yarn lint"
"frontend:admin": "cd frontend-admin && yarn lint",
},
"husky": {
"hooks": {
"pre-commit": "npm-run-all frontend frontend:admin"
}
},
// In the main folder you should install husky
// and npm-run-all to execute multiple commands
"dependencies": {
"husky": "^4.3.0",
"npm-run-all": "^4.1.5"
}
}
您的子目录应该有一个要执行的 lint 脚本。
当其中一个脚本崩溃时,husky 会给出报告并立即中止。
我通过在 /root 目录中安装 运行 husky 解决了同样的问题。
(这是必需的,因为哈士奇需要与 .git 文件夹位于同一目录中。
npm install husky
npx husky install #use this command to create a .husky folder
搜索 'pre-commit' 文件
cd ./frontend && npm run lint && npm run build
cd ..
cd ./backend && npm run lint && npm run test
注意:输入相同的命令,以便您执行每个 sub-directory/project
谢谢!
虽然这个问题已经有几年了。希望有人能从 husky.
的人们提供的更新答案中受益
TL;DR
查看新指南here。
对于那些 w@ntz answ3rz n0wz!!
typicode/husky-init README.md 中提供的新指南在“您的 package.json
文件和 .git 目录不在同一级别时提出以下建议。对于例如,project/.git
和 project/front/package.json
"
您可以在准备脚本期间更改目录并传递子目录:
// package.json
{
"scripts": {
"prepare": "cd .. && husky install front/.husky"
}
}
我们有一个具有如下文件夹结构的企业应用程序:
/项目 .git /sub1 ...Java 项目 /sub2 package.json ...Java脚本Backbone项目 /sub3 ...Java 项目 /sub4 ...Java 项目 /sub5 package.json ...Java脚本 React 项目
我目前在 sub2 和 sub5 项目中都设置了 Husky,这会导致冲突(每当我切换项目时都需要 npm install)。此外,Java 开发人员报告说,当他们在项目 sub1、sub3 和 sub4 中提交代码时,会执行 Husky git 挂钩。
如果提交时在某个文件夹中,是否可以只使用钩子运行?
Is it possible to only have the hooks run if you are IN a certain folder when you commit?
不,但是 挂钩本身 可以确定 它在 中的目录时 运行。这没有正确记录,但是 GIT_PREFIX
在 Git chdir
-s 之前的环境中设置到 $GIT_WORK_TREE
或 $GIT_DIR
目录。 (从 Git 版本 1.7.8 开始就是这种情况。)
我遇到了同样的问题。我通过在主目录中安装 husky 来修复它。
我的设置:
/project .git package.json /frontend package.json /frontend-admin package.json
在/project/package.json
中:
{
"license": "MIT",
"version": "0.0.1",
"private": true,
"scripts": {
"frontend": "cd frontend && yarn lint"
"frontend:admin": "cd frontend-admin && yarn lint",
},
"husky": {
"hooks": {
"pre-commit": "npm-run-all frontend frontend:admin"
}
},
// In the main folder you should install husky
// and npm-run-all to execute multiple commands
"dependencies": {
"husky": "^4.3.0",
"npm-run-all": "^4.1.5"
}
}
您的子目录应该有一个要执行的 lint 脚本。
当其中一个脚本崩溃时,husky 会给出报告并立即中止。
我通过在 /root 目录中安装 运行 husky 解决了同样的问题。 (这是必需的,因为哈士奇需要与 .git 文件夹位于同一目录中。
npm install husky
npx husky install #use this command to create a .husky folder
搜索 'pre-commit' 文件
cd ./frontend && npm run lint && npm run build
cd ..
cd ./backend && npm run lint && npm run test
注意:输入相同的命令,以便您执行每个 sub-directory/project 谢谢!
虽然这个问题已经有几年了。希望有人能从 husky.
的人们提供的更新答案中受益TL;DR
查看新指南here。
对于那些 w@ntz answ3rz n0wz!!
typicode/husky-init README.md 中提供的新指南在“您的 package.json
文件和 .git 目录不在同一级别时提出以下建议。对于例如,project/.git
和 project/front/package.json
"
您可以在准备脚本期间更改目录并传递子目录:
// package.json
{
"scripts": {
"prepare": "cd .. && husky install front/.husky"
}
}