类似前端使用的 husky,在提交代码前进行代码分析、格式化。
# pip
pip install pre-commit
# brew
brew install pre-commit
.pre-commit-config.yaml# See <https://pre-commit.com> for more information
# See <https://pre-commit.com/hooks.html> for more hooks
repos:
- repo: <https://github.com/dluksza/flutter-analyze-pre-commit>
rev: "master"
hooks:
- id: flutter-analyze
- repo: <https://github.com/Cretezy/flutter-format-pre-commit>
rev: "master"
hooks:
- id: flutter-format
- repo: <https://github.com/fluttercommunity/import_sorter>
rev: "master"
hooks:
- id: flutter-import-sorter
pre-commit install
import_sorter dev 依赖# pubspec.yaml
dev_dependencies:
import_sorter:
Analyzing pre_commit_demo...
info • Unused import: 'package:pre_commit_demo/widget.dart' • lib/main.dart:8:8 • unused_import
info • This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final: MyApp.a • lib/main.dart:14:7 • must_be_immutable
2 issues found. (ran in 2.1s)
根据错误提示修改代码,重选提交。
flutter-format 格式化
Format Flutter Code......................................................Failed
- hook id: flutter-format
- files were modified by this hook
Formatted lib/main.dart
钩子会格式化代码,stage 格式化后的代码,重新提交。
flutter-import-sorter import 头文件排序
// Dart imports:
import 'dart:developer';
// Flutter imports:
import 'package:flutter/material.dart';
// Project imports:
import 'package:pre_commit_demo/widget.dart';
Flutter Import Sorter....................................................Failed
- hook id: flutter-import-sorter
- files were modified by this hook
┏━━🗂 Sorting 1 dart files
┃ ┃
┃ ┗━━ ✅ Sorted 3 out of 3 imports in lib/main.dart
┃
┗━━🙌 Sorted 3 imports in 0.152 seconds
同 format,重新提交即可。