熟悉前端开发的同学应该知道,前端工程化工作流中有一个很常用的工具:Husky。Husky 方便我们在项目中添加 ​​git hooks​​​,比如配合 ​​lint-staged​​​ 在代码提交前进行自动检查编码规范,再比如配合 ​​commitlint​​ 对提交时填写的 message 内容进行检查。对于多人参与的开源项目或公司团队项目,这些工具非常有用,它可以确保每个人都使用同样的规范和工作流来协同工作。

前端的工程化已经发展很成熟了,主要因为前端开发语言的弱类型和各种编程风格的不一致,促使人们急需要一些工程化手段来解决这类问题。相比前端来说,.NET 开发在这方面的需求就没有那么强烈,因为它的配套 IDE VS 的智能提示解决了大部分问题。但有也一些问题是 IDE 解决不了的,毕竟 IDE 只是给出建议,而不是强制使用规范,而且功能也有限,很难灵活地自定义规范。

但是 .NET 有了 Husky 这种 ​​git hooks​​​ 工具后,就对统一编程规范提供了无限可能。今天要介绍的就是一个开源的基于 .NET 实现的 Husky:​​Husky.Net​​。

​Husky.Net​​ 的 GitHub 地址:

https://github.com/alirezanet/Husky.Net

当然,如果不使用 ​​Husky.Net​​​ 这个工具,你也可以在 .NET 项目中使用 Husky,只是要安装 node.js、yarn 等,还要配置 ​​packages.json​​​ 文件。使用 ​​Husky.Net​​​ 更简便,而且支持的功能会更多。Husky 支持所有的 ​​git hooks​​。

当你提交 .NET 项目代码时,你可以用它来做一些提交前的检查,比如格式化代码、运行测试等。下面是 ​​Husky.Net​​ 的一些特点:


  • 由现代化新的 Git 功能(core.hooksPath)提供支持。
  • 用户友好的信息展示
  • 支持 macOS、Linux 和 Windows
  • 支持 Git GUI
  • 自定义目录
  • Staged-hooks! (即将支持)
  • dotnet-format 集成(即将支持)

​Husky.Net​​​ 是一个 ​​dotnet​​ CLI 工具,它支持两种安装方式,全局安装和本地安装(只对项目)。安装命令如下:

# 全局安装
dotnet tool install --global Husky

# 本地安装
cd <Your project root directory>
dotnet new tool-manifest
dotnet tool install Husky

安装完后便可把 husky 安装到你的 git 项目:

cd <Your project root directory>
husky install

然后你可以添加一个 commit hook,比如

husky add .husky/pre-commit "Husky is awesome!"

这样,你每次提交代码都会打印一行消息 ​​Husky is awesome!​​。

提交代码测试一下:

git add .
git commit -m "Keep calm and commit"
# Husky is awesome!

目前这个工具还不完善,还有很多功能需要开发,现在发布的是 ​​v0.0.1​​ 版本,后面会陆续增加许多特性。