Flutter代码导入优化插件better_imports的使用
Flutter代码导入优化插件better_imports的使用
better_imports
是一个用于Dart项目的命令行工具,可以对Dart文件中的导入进行排序和组织。用户可以通过各种标志和选项来自定义导入排序的行为。
特性
- 默认配置
- 使用外部配置
- 排序所有
.dart
文件 - 将包导入转换为相对导入并反向操作
- 仅排序特定文件夹
- 仅排序特定文件
- 基于正则表达式的包含或排除过滤
- 忽略特定文件
- 向导入类型/部分添加注释
- 切换控制台输出
- 跟踪/日志记录
示例
之前
library better_imports;
import 'dart:io';
import 'package:better_imports/lib.dart';
import 'cfg_test.dart';
import 'package:dart_style/dart_style.dart';
import '../res/sorter_fixtures.dart';
import 'package:test/test.dart';
void main() {
final formatter = DartFormatter();
}
之后(默认配置)
library better_imports;
// Dart Imports
import 'dart:io';
// Package Imports
import 'package:dart_style/dart_style.dart';
import 'package:test/test.dart';
// Project Imports
import 'package:better_imports/lib.dart';
// Relative Project Imports
import '../res/sorter_fixtures.dart';
import 'cfg_test.dart';
void main() {
final formatter = DartFormatter();
}
使用方法
推荐:本地可执行文件
- 下载预编译的可执行文件,或者克隆仓库并自行编译。
- 在项目根目录下:
在Linux上:dart compile exe .\bin\better_imports.dart
dart compile exe ./bin/better_imports.dart -o ./bin/better_imports
- 在项目根目录下:
- 解压下载的存档或将编译后的可执行文件移动到你选择的文件夹中。
- 如果需要,为操作系统重命名可执行文件为
better_imports
。
- 如果需要,为操作系统重命名可执行文件为
- 将选定的文件夹/可执行文件添加到你的PATH环境变量中。
- Windows: 如何将路径添加到Windows PATH环境变量
- Mac: 如何在macOS中设置PATH变量
- Linux: 如何在Linux中将目录添加到PATH中
- 可能需要使用
chmod
使文件可执行。
- 可能需要使用
- 进入你的项目文件夹,根目录。
- 运行:
better_imports
作为依赖项(这大约慢10倍)
- 按照通常的包安装说明进行操作。
- 考虑将其作为
dev_dependency
,这样你不会依赖任何其他东西。 - 运行:
或在Flutter中:dart pub run better_imports:better_imports
flutter pub run better_imports:better_imports
在VSCode中保存时自动执行
- 安装 Run on Save 扩展。
- 在
settings.json
中添加以下配置:
"emeraldwalk.runonsave": {
"commands": [
{
"match": "\\.dart$",
"cmd": "better_imports --files ${fileBasename} -s"
}
]
}
CLI标志和选项
标志
名称 | 简写 | 描述 |
---|---|---|
–help | -h | 打印此屏幕。 |
–no-recursive | 在收集 .dart 文件时不递归搜索。 |
|
–silent | -s | 禁用控制台结果输出。 |
–relative | 将所有项目包导入转换为相对项目导入。 | |
–no-comments | 移除导入类型/部分的注释。 | |
–trace | 打印扩展日志到控制台。 | |
–dry-run | 打印运行的结果而不写入文件。 | |
–dart-fmt | 在排序导入后格式化文件。默认为true。 | |
可以通过使用 --no-dart-fmt 来禁用它。 |
选项
名称 | 参数 | 描述 |
---|---|---|
–cfg | 外部 YAML 配置文件的路径。""是可选的。如果路径包含空格,则需要使用 “”。 | |
–project-name | 用于识别项目导入的项目名称。""是可选的。如果项目名称包含空格,则需要使用 “”。 | |
–folders | 仅排序给定文件夹及其子文件夹。""是可选的。如果文件夹名称包含空格,则需要使用 “”。必须用逗号分隔。如果文件夹不在项目根目录中,则提供相对于项目根目录的路径。例如: “lib/sub folder/folder1, bin/subfolder/folder2” | |
–files | 仅排序给定的文件。""是可选的。如果文件名包含空格,则需要使用 “”。必须用逗号分隔。 | |
–ignore-files | 在排序导入时忽略的文件。""是可选的。如果文件名包含空格,则需要使用 “”。必须用逗号分隔。 | |
–files-like | 用于筛选应排序文件的正则表达式。""是可选的。如果正则表达式包含空格,则需要使用 “”。必须用逗号分隔。 | |
–ignore-files-like | 用于筛选应忽略文件的正则表达式。""是可选的。如果正则表达式包含空格,则需要使用 “”。必须用逗号分隔。 |
其他信息
覆盖默认值
你可以通过在 pubspec.yaml
文件中添加一个 better_imports
部分来覆盖默认配置值。
或者通过提供命令行参数。
注意:如果提供了命令行参数,它们将覆盖任何其他设置!
例如:
复制并粘贴默认配置到你的 pubspec.yaml
文件中。
确保保持适当的缩进。
外部配置
如果你想使用外部配置文件,可以在 pubspec.yaml
文件中添加一个最小化的 better_imports
部分。
例如:
better_imports:
cfg_path: path/to/your/config/cfg.yaml
— 或 —
提供 --cfg
CLI 选项。
例如:
better_imports --cfg path/to/your/config/cfg.yaml
默认YAML配置
# Better Imports 默认配置
# 当在CLI中传递设置时,将覆盖默认配置
better_imports:
# 如果设置,将覆盖项目名称
# 用于排序项目导入
project_name:
# 外部配置的绝对路径
# 如果设置,本节中的其余部分将被忽略
cfg_path:
# 标志以包括子文件夹
recursive: true
# 标志以在导入类型/部分上方添加注释
comments: true
# 标志以禁用控制台结果输出
silent: false
# 标志以在项目中使用相对导入
relative: false
# 标志以记录所有发生的事件到控制台
trace: false
# 标志以运行干跑,不更改文件
dry_run: false
# 标志以在排序导入后使用Dart格式化程序
dart_fmt: true
# 用于收集Dart文件的文件夹名称
folders:
- lib
- bin
- res
- example
- test
- tests
- integration_test
- integration_tests
- test_driver
# 应该排序的文件名
files:
# 应该被排除的文件名
ignore_files:
# 应该收集的文件的正则表达式模式
files_like:
# 应该被排除的文件的正则表达式模式
ignore_files_like:
- .*generated_plugin_registrant\.dart
- .*\.g\.dart
- .*\.gr\.dart
- .*\.freezed\.dart
更多关于Flutter代码导入优化插件better_imports的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter代码导入优化插件better_imports的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中导入并使用better_imports
插件的一个示例。better_imports
插件有助于优化和管理Dart文件的导入语句,通常通过格式化工具如dart format
的集成来自动优化导入。不过需要注意的是,better_imports
本身并不是一个独立的Flutter/Dart包,而是一个与Dart格式化工具配合使用的工具集。因此,我们会通过配置Dart的格式化工具来实现导入优化。
首先,确保你的Flutter和Dart环境已经正确安装和配置。
1. 安装 Dart 格式化工具(dart_style)
虽然dart format
命令是Dart SDK的一部分,但确保你使用的是最新版本的Dart SDK。你可以通过以下命令检查Dart版本:
dart --version
2. 配置 .dart-format
文件(可选)
虽然better_imports
不直接提供一个包,但你可以通过配置.dart-format
文件来自定义dart format
的行为。例如,你可以指定一些格式化选项,尽管better_imports
的逻辑主要通过Dart的格式化引擎内部实现。
一个基本的.dart-format
文件可能看起来像这样(尽管这个文件本身并不直接控制导入优化,但可以作为格式化的起点):
# .dart-format
lineLength: 80
3. 使用 dart format
命令优化导入
在项目的根目录下运行以下命令来格式化整个项目的Dart文件,包括优化导入语句:
dart format .
这个命令会递归地遍历当前目录及其子目录中的所有.dart
文件,并按照Dart的格式规范重新格式化它们,包括优化导入语句。
4. 集成到CI/CD流程(可选)
为了确保代码质量,你可以将dart format
命令集成到你的持续集成/持续部署(CI/CD)流程中。例如,在.github/workflows/ci.yml
中添加一个步骤来运行格式化检查:
name: CI
on: [push, pull_request]
jobs:
format:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
- run: dart format --set-exit-if-changed .
这个GitHub Actions工作流会在每次推送或拉取请求时检查代码格式,如果格式化后有变化,则设置退出代码为非零,从而阻止CI流程通过。
5. 注意事项
- 确保团队成员都了解并使用
dart format
来保持代码风格一致。 - 如果使用IDE(如VSCode或Android Studio),确保格式化工具与IDE中的格式化设置保持一致。
通过上述步骤,你可以在Flutter项目中有效地管理和优化导入语句,尽管没有直接名为better_imports
的包,但Dart的格式化工具提供了类似的功能。