从零实现myhusky, 迎风破浪勇开篇!
2023-09-26 01:13:15
一、走进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的功能,使之成为您代码开发过程中的得力助手。