Flutter代码导入优化插件better_imports的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

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();
}

使用方法

推荐:本地可执行文件

  1. 下载预编译的可执行文件,或者克隆仓库并自行编译。
    • 在项目根目录下:
      dart compile exe .\bin\better_imports.dart
      
      在Linux上:
      dart compile exe ./bin/better_imports.dart -o ./bin/better_imports
      
  2. 解压下载的存档或将编译后的可执行文件移动到你选择的文件夹中。
    • 如果需要,为操作系统重命名可执行文件为 better_imports
  3. 将选定的文件夹/可执行文件添加到你的PATH环境变量中。
  4. 进入你的项目文件夹,根目录。
  5. 运行:
    better_imports
    

作为依赖项(这大约慢10倍)

  1. 按照通常的包安装说明进行操作。
  2. 考虑将其作为 dev_dependency,这样你不会依赖任何其他东西。
  3. 运行:
    dart pub run better_imports:better_imports
    
    或在Flutter中:
    flutter pub run better_imports:better_imports
    

在VSCode中保存时自动执行

  1. 安装 Run on Save 扩展。
  2. 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

1 回复

更多关于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的格式化工具提供了类似的功能。

回到顶部