🎨
Notes
  • 持续更新中...
  • articles
    • browser
      • 深入理解现代浏览器 - 导航
      • 深入理解现代浏览器 - 架构
      • 深入理解现代浏览器 - 交互
      • 深入理解现代浏览器 - 渲染器进程
    • dsa
      • DSA - 并查集
      • DSA - 哈希表
      • DSA - AVL 树
      • DSA - 二叉树
      • 快速选择
      • Big O 算法复杂度
      • DSA - 栈和队列
      • DSA - 前缀树 Trie
      • DSA - 图
      • DSA - 链表
      • DSA - 递归
    • typescript
      • TypeScript 学习笔记 - 任意属性 (Indexable Types)
      • 力扣的 TypeScript 面试题
      • TypeScript 学习笔记 - as const
      • TypeScript 学习笔记 - infer
    • network
      • Internet Protocol (IP)
      • 计算机网络基础
      • 如何分辨同源和同站
      • DNS 如何查询 IP 地址?
    • vue
      • Nuxt.js 入门
      • 从零实现一个 Mini Vue
      • 从零实现一个简单的 VDOM 引擎
      • 从零实现一个响应式状态管理
    • sorting
      • 排序 - 归并排序
      • 排序 - 冒泡排序
      • 排序 - 选择排序
      • 排序 - 计数排序
      • 排序 - 插入排序
    • compile
      • Compiler and Interpreter
      • Just-In-Time (JIT) Compilers
      • 编译流程
    • others
      • 什么是上下文无关语法
      • 如何在终端打印出有颜色的字
    • dev-ops
      • github-actions
        • GitHub Action 简介
        • GitHub Actions for CI
    • workflow
      • 用 Node 写一个 cli
      • 如何规范 git commit 信息
      • 如何监听 git hooks
      • 如何规范代码风格 - prettier
      • 如何发布一个 npm package
      • 如何规范代码质量 - eslint
    • design-pattern
      • 代理模式
      • 单例模式
      • 策略模式
    • security
      • 点击劫持
      • CSP 内容安全策略
    • javascript
      • 尾调用优化
      • 4种常见的内存泄漏及解决方法
    • unit-test
      • Test Vuejs Application - Chapter 2
      • Test Vuejs Application - Chapter 1
      • Vue Unit Test Intro
    • performance
      • HTTP 缓存
      • 如何优化图片资源
Powered by GitBook
On this page
  • git hooks
  • husky
  • 一般用 git hooks 来做什么

Was this helpful?

  1. articles
  2. workflow

如何监听 git hooks

Previous如何规范 git commit 信息Next如何规范代码风格 - prettier

Last updated 4 years ago

Was this helpful?

git hooks

首先来简单了解下 git hooks 是什么。

在 git 的生命周期中,会有很多事件发生,比如 commit, push 等等。在这些事件发生时,我们可以指定执行一些脚本,这些脚本就是 git hooks。

要用比喻来说的话,有点像 Vue 组件的生命周期函数,但也不完全一样,Vue 的生命周期函数不能阻止组件进入下一个生命周期,而 git hooks 却可以阻止 git 事件的发生。

我们可以自己写 git hook 脚本,不过有更简单的办法,就是用 husky(git hooks for Node.js)!

// 谁要自己写啊 (⊙ˍ⊙)?

husky

安装

npm i -D husky

安装注意

  • 在初始化 git 仓库之后再安装 husky。

  • 或者在安装 husky 之后运行 npx husky install 命令。

这样 husky 才能起作用。

package.json 配置

// package.json
{
    "husky": {
        "hooks": {
            // 要监听的 git hook: 要执行的命令
            "pre-commit": "echo hello suukii"
        }
    }
}

.huskyrc 配置

配置也可以单独放在一个文件中:

// .huskyrc
{
    "hooks": {
        "pre-commit": "echo hello suukii"
    }
}

绕过 git hooks

如果想要绕过 git hooks,可以使用 --no-verify 或者 -n 参数:

git commit -m 'yoho' --no-verify

如果是没有 --no-verify 参数的 git 命令,可以使用 HUSKY 环境变量:

HUSKY=0 git push

常用的 hooks

  • commit-msg: git commit 带参数的时候触发

  • pre-commit: git commit 不带参数参数时也会触发

  • push

一般用 git hooks 来做什么

  • 规范 commit 信息

  • 规范代码质量/风格

  • 在提交代码前运行测试

  • ......

husky 几乎支持

https://typicode.github.io/husky/#/
git 提供的所有 hooks
https://www.freecodecamp.org/news/how-to-add-commit-hooks-to-git-with-husky-to-automate-code-tasks/