返回

从零实现myhusky, 迎风破浪勇开篇!

前端

一、走进husky的运行机制

为了更好地理解husky的工作原理,我们首先需要了解git钩子。git钩子是git用于在特定事件发生时执行自定义脚本的机制。这些事件可以是提交、推送、合并等。钩子脚本通常位于.git/hooks目录中,当相应的事件发生时,git就会自动调用这些脚本。

husky正是利用了git钩子来实现提交前后的自动化检查和修复功能。当用户运行git commit命令时,husky会自动运行.git/hooks/pre-commit钩子脚本。在这个脚本中,我们可以定义各种检查和修复操作,例如,使用commitlint检查提交信息是否符合规范,使用prettier格式化代码,等等。如果检查通过,提交操作就会继续进行;如果检查失败,提交操作就会被终止,并给出相应的错误信息。

二、从零实现myhusky

1. 搭建myhusky项目

mkdir myhusky
cd myhusky
npm init -y

2. 安装依赖

npm install husky --save-dev

3. 配置husky

在package.json文件中添加如下配置:

{
  "husky": {
    "hooks": {
      "pre-commit": "npx lint-staged"
    }
  }
}

这表示在每次提交前,husky会自动运行npx lint-staged命令。

4. 安装并配置lint-staged

lint-staged是一个用于检查和修复已暂存文件的工具。我们可以使用它来检查提交信息是否符合规范,格式化代码,等等。

npm install lint-staged --save-dev

在package.json文件中添加如下配置:

{
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": ["prettier --write"]
  }
}

这表示对所有以.js.jsx.ts.tsx结尾的文件,在提交前都会使用prettier进行格式化。

5. 编写pre-commit钩子脚本

.git/hooks目录中创建一个名为pre-commit的文件,并添加如下内容:

#!/bin/sh

# 检查提交信息是否符合规范
if ! commitlint --edit; then
  exit 1
fi

# 格式化代码
npx lint-staged

这表示在提交前,会先使用commitlint检查提交信息是否符合规范,然后再使用lint-staged格式化代码。如果其中任何一个检查失败,提交操作都会被终止。

6. 测试myhusky

现在,我们可以测试一下myhusky是否工作正常。首先,在项目中创建一个新文件,然后添加一些代码。然后,运行git add命令将文件添加到暂存区。最后,运行git commit命令提交代码。

如果一切正常,你会看到提交信息被检查,代码被格式化,提交操作成功完成。

三、拓展myhusky功能

除了上述基本功能外,myhusky还可以实现更多功能,例如:

  • 检查代码风格是否符合规范
  • 检查代码是否存在安全漏洞
  • 检查代码是否包含未使用的代码
  • 自动生成CHANGELOG文件

这些功能都可以通过安装相应的插件来实现。例如,我们可以安装stylelint插件来检查代码风格是否符合规范,安装snyk插件来检查代码是否存在安全漏洞,等等。

四、结语

通过本文,我们详细介绍了如何从头开始构建一个功能齐全的myhusky工具。myhusky可以帮助我们轻松实现代码提交前后的各种自定义检查和修复功能,从而确保代码质量和一致性。希望本文对您有所帮助,也希望您能进一步探索和扩展myhusky的功能,使之成为您代码开发过程中的得力助手。