标签: husky

当 .git 位于不同文件夹中时如何配置 husky?

我正在尝试为我公司的项目设置提交时的自动 linting,我见过的最好方法是 NPMhusky包。我正在按照、 、Husky的设置说明进行操作,但我一直遇到同样的问题,但我不知道如何解决。eslintprettierlint-staged

\n

我的问题是我的项目是这样设置的:

\n
- Parent Directory\n  - .git\n  - Working Project Directory\n    - node_modules\n    - package.json\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试安装 husky 时,出现错误,提示我缺少该.git文件,但它就在那里,只是文件结构中的上一级!

\n

我在其他帖子中看到了一些有关使用以下技术来修复它的内容:

\n
\n

npx mrm lint-staged这将失败,\xe2\x80\x99s 预期

\n
\n
\n

然后修复 npm 准备脚本\n "prepare": "husky install" -> "prepare": "cd .. && husky install some-folder/.husky"

\n
\n
\n

然后运行npm i

\n
\n

然而它对我不起作用。

\n

我也尝试在中安装 husky,parent directory但它不太有效,并且它使我们项目的安装过程变得更加困难

\n

有没有人有什么建议?

\n

编辑:这是我收到的错误消息:

\n
% …
Run Code Online (Sandbox Code Playgroud)

javascript npm eslint package.json husky

9
推荐指数
2
解决办法
9510
查看次数

为什么我的 git pre-commit 钩子没有运行?

直到最近——我几天前才注意到这一点——我的 git pre-commit 钩子正在工作。我正在编写一个 React 应用程序,并在提交之前使用 Husky、TSLint 和 Prettier 来清理和整理我的代码。现在,当我更改和提交文件时,预提交钩子不会运行。

我的项目结构如下所示:

- project
  - .git/
  - react/   <- the frontend
    - node_modules/
    - src/
    - package.json
    - (other files)
  - nodejs/  <- the server
    - node_modules/
    - src/
    - package.json
    - (other files)
  - package.json
  - (other files)
Run Code Online (Sandbox Code Playgroud)

如果我手动执行钩子,它似乎运行良好:

[/project/react] # git status
On branch fixHusky
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    modified:   MyFile.ts

[/project/react] # ../.git/hooks/pre-commit
husky > pre-commit (node v12.6.0)
  ? Stashing changes... …
Run Code Online (Sandbox Code Playgroud)

git husky

8
推荐指数
2
解决办法
9950
查看次数

手动运行 husky git hook(不使用 git 命令触发它)

我正在设置一个节点项目,husky我想手动运行一个 git-hook 脚本,而不必在 git 中触发它。

例子:

我的 package.json 有以下内容:

{
...
    "scripts": {
        "precommit": // something goes here
    }
...
    "husky": {
        "hooks": {
            "pre-commit": "lint-staged"
        }
    },
...
}
Run Code Online (Sandbox Code Playgroud)

如果我运行npm run precommitlint-staged钩子步骤将运行,而没有实际发生在 git 中的提交。

这可能吗?

javascript git githooks husky

8
推荐指数
1
解决办法
4022
查看次数

预提交钩子(husky + Pretty-quick)不起作用

我已经像以前一样配置了 prettier 和预提交钩子,但在我的新项目中 husky 在任何提交之前都不会运行!

以下是项目package.json文件的一部分:

{
  ...,
  "devDependencies": {
    "husky": "^4.3.6",
    "prettier": "2.2.1",
    "pretty-quick": "^3.1.0"
  },
  "husky": {
    "hooks": {
      "pre-commit": "pretty-quick --staged"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

husky prettier

8
推荐指数
1
解决办法
1万
查看次数

当本地没有可用的 Node.js 时,将 Husky 与 Docker 结合使用

使用 Docker,当容器中有 Node.js 而本地机器上没有 Node.js 时,我试图让 Husky 工作。

因为它将用 git 命令触发,这里的信息是:“如果你在终端中运行 git 命令,husky 将使用你的 shell 中定义的版本PATH”,另一个:“~/.huskyrc如果存在,Husky 将使用源文件在运行钩子脚本之前。例如,您可以使用它来加载节点版本管理器或在钩子之前运行一些 shell 命令。”

诸如更改PATH以便它指向容器中的 Node.js 之类的事情是否可以成为解决方案?如果是这样,怎么办?

提前致谢!

githooks node.js docker husky git-husky

7
推荐指数
1
解决办法
371
查看次数

在 husky 中将 commitlint 添加到 commit-msg 挂钩的正确方法是什么?

我有一个有角度的项目,我想在其中强制执行常规提交。我未能成功地使用正确的钩子来防止错误的钩子。

我从本教程开始,其中提到将以下内容添加到 package.json:

{
  "hooks": {
    "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
  }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用(它仍然会导致错误的提交),所以我做了一些研究,发现这篇文章说上面是针对 husky 4 的,对于 husky 5 我应该运行这个命令:

npx husky add .husky/commit-msg 'npx commitlint --edit $1'
Run Code Online (Sandbox Code Playgroud)

据我所知,commitlint 官方文档说以同样的方式进行。但是,当我运行它时,我收到这个奇怪的提示,但它没有执行任何操作:

PS C:\...\MyProj> npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1'
Usage
  husky install [dir] (default: .husky)
  husky uninstall
  husky set|add <file> [cmd]
Run Code Online (Sandbox Code Playgroud)

这只是令人困惑,因为我所写的实际上是在提示的第三行之后。

有没有人经历过这个并可以帮助我理解我需要做什么?

package.json 中的相关部分:

"scripts": {
    "postinstall": "husky install"
  },
  "private": true,
  "devDependencies": {
    "@commitlint/cli": "^12.1.1",
    "@commitlint/config-conventional": "^12.1.1",
    "husky": "^6.0.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

commit node.js husky

7
推荐指数
1
解决办法
8792
查看次数

为什么我的更改在取消 git commit 后消失了,我该如何恢复它们?

这是我所做的:

  1. 编码了 8 小时的更改。
  2. git status 显示我的所有更改。
  3. git add -A
  4. git commit -m "Foo". 预提交的 git 钩子用husky和触发lint-staged
  5. 我记得有一个我未能修复的 TypeScript 输入错误,所以我按 Ctrl+C 取消。
  6. 心不在焉,我又跑了git commit -m "Foo"一次,立即取消了。
  7. 变化消失了!文件被还原,git status是干净的,git log并且git reflog不显示新的提交。

为什么我的更改被还原?我如何恢复它们?

第1步 第2步

git husky lint-staged git-husky

6
推荐指数
2
解决办法
2036
查看次数

如何为 lint-staged 提供多种模式?

例如,我在 .rb 和 .js 文件上匹配了它。

例如**/*.{js,rb}

例如,还想匹配GemfileRakefile

lint husky lint-staged

6
推荐指数
1
解决办法
2259
查看次数

哈士奇预提交挂钩未触发

我有一个问题husky。我希望 huskyeslint在 git commit 即将完成时运行并且更漂亮,以便它可以强制执行干净的编码检查。我已经设置eslintprettier集成了两者。手动使用时它们工作正常。eslint然而,如果违反其中一条规则,哈士奇允许提交。

我还将pre-commit.sample本地项目.git/hooks目录中的文件重命名为pre-commit.

这是我的package.json文件:

  "scripts": {
    "prettier-format": "prettier --config .prettierrc 'src/**/*.ts' 'test/**/*.ts' --write",
    "lint": "eslint . --ext .ts"
  },
  "husky": {
    "hooks": {
      "pre-commit": "npm run prettier-format && npm run lint"
    }
  },
  "devDependencies": {
    "husky": "^7.0.1"
  }
Run Code Online (Sandbox Code Playgroud)

请问这里可能是什么问题?非常感谢。

git husky

6
推荐指数
2
解决办法
1万
查看次数

Husky 准备脚本未能部署 Firebase 功能

我已经husky在我的 npm 项目中安装了prepare如下脚本

{
  "name": "functions",
  "scripts": {
    "build": "tsc",
    "start": "npm run serve",
    "deploy": "firebase deploy --only functions",
    "prepare": "husky install functions/.husky"
  }
  "dependencies": {
    "firebase-admin": "^11.4.1",
    "firebase-functions": "^4.1.1",
  },
  "devDependencies": {
    "husky": "^8.0.2",
    "typescript": "^4.9.4"
  }
}
Run Code Online (Sandbox Code Playgroud)

husky声明为devDependencies这个 npm 模块仅在本地开发时需要,在运行时应用程序中不需要。

所以当我运行时npm run deploy,我收到以下错误

i  functions: updating Node.js 16 function funName(us-central1)...
Build failed:

> prepare
> husky install functions/.husky

sh: 1: husky: not found
npm ERR! code 127
npm ERR! …
Run Code Online (Sandbox Code Playgroud)

npm firebase google-cloud-functions husky firebase-cli

6
推荐指数
1
解决办法
528
查看次数