前言
Flutter 和 Dart 的命令行工具都提供了一些便捷操作的命令,如 flutter analyze 和 dart analyze 用于分析代码,flutter format 和 dart format 用于格式化代码,flutter test 和 dart test 可以跑测试代码
在团队协作中,会有一些约定好的代码规范,如何保证每个开发者所提交代码时都能够满足规范的要求?常用的办法就是使用 Git 钩子。但由于 Git 钩子默认存在于项目的 .git/hooks 目录下,不会进入代码库中,那么需要解决的问题就是如何在团队协作中共享 Git 钩子。
关于 Git 钩子,见 自定义 Git - Git 钩子
在 JavaScript 社区中有一个广泛使用的的 npm 包 husky,用来管理 JS 项目的 Git 钩子。但对于 Flutter 和 Dart 项目而言,如果直接使用 npm 包 husky,则需要每个写作者都在本地配有 Node 环境,显然很不方便。
好在 pub.dev (Flutter 和 Dart 的包管理平台)已经有了 Dart 语言版本的 husky,下面来简单介绍下如何使用 husky.
使用
添加依赖
首先,将 husky 添加为项目的开发依赖,即在项目的 pubsepc.yaml 中的 dev_dependencies 下添加 husky:
dev_dependencies:
husky: latest # 替换为符合当前使用的 Dart SDK 版本要求的版本号,最新版本是 0.1.6
也可以直接通过 flutter pub add --dev husky 或 dart pub add --dev husky 来添加
安装
然后,运行 husky install 命令在当前项目目录下安装和配置 husky:
flutter pub run husky instlal # 或者 dart run husky install
这会在当前项目目录下生成 .husky/ 目录,需要将此目录提交到 Git 仓库中。
添加钩子
接着,添加一个 Git 钩子。通常添加可以阻断 commit 的钩子 pre-commit:
flutter pub run husky add .husky/pre-commit 'flutter analyze'
这会在 .husky/ 目录下生成一个 pre-commit 钩子文件,其内容如下:
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
flutter analyze
测试钩子
添加一次提交:
git add .husky
git commit -m 'Add husky to manage git hooks'
这时可以看到会运行 flutter analyze,如果想在每次提交时做更多的检查工作,只需要编辑 .husky/pre-commit 文件内容即可。
共享
对于写作者,在拉取到新的代码后,只需要在本地执行 flutter pub run husky install 即可在其本地配置好 Git 钩子.