Flutter文件夹校验与管理插件folderslint的使用

Flutter文件夹校验与管理插件folderslint的使用

FoldersLint

FoldersLint logo

目录结构检查器,适用于前端项目。

FoldersLint in action
  • ✅ 轻松配置,只需简单的规则在一个文件中。
  • ✅ 极其快速。
  • ✅ 支持Windows、MacOS和Linux。
  • ✅ 可以与lint-staged一起使用。

为什么

通过目录结构检查使项目更加整洁。 🗂

目录结构规则是任何项目的重要部分。这些规则有助于提高项目的清晰度并减少复杂性。明确的结构可以使开发人员始终知道在哪里放置文件以及在哪里查找它们。如果项目足够大,则有必要避免混乱。

folderslint 允许你配置目录结构规则,并检查已存在或新文件是否符合这些规则。

快速概述

全局安装 folderslint

pub global activate folderslint

或者将其作为开发依赖项安装:

pub add dev:folderslint 

在项目的根目录下设置一个配置文件 .folderslintrc

运行 folderslint 检查整个项目或某个目录(例如 /components):

(如果全局安装)

folderslint components

如果作为开发依赖项安装

dart run folderslint components

配置

folderslint 需要在项目的根目录下有一个名为 .folderslintrc 的配置文件。

配置文件的示例:

{
  "root": "src", // 可选
  "rules": [
    "components/*",
    "pages/components/*/utils",
    "hooks",
    "legacy/**"
   ]
}

root 是要检查结构的目录。

rules 是定义允许的目录路径的规则数组。

根目录

如果你想要检查特定目录的结构,则必须指定 root。不在 root 范围内的目录将不会被检查。如果你想检查项目中的所有目录,则不需要指定 root

规则语法

有三种方式来指定规则:

  • 目录的确切路径,
  • 使用 * 替换目录名称,表示该层接受任何目录,
  • 在规则的末尾使用 ** 替换目录名称,表示该层以下的所有层级都接受任何目录。

⚠️ ** 只能在规则的末尾使用,因为它在中间使用没有意义。它会使得路径中间的任意数量嵌套目录被接受,这与明确定义的目录结构规则的想法不符。

例如:

规则 含义
hooks ✅ 接受目录 hooks(及其文件)。
❌ 不接受任何嵌套目录。
components/* ✅ 接受目录 components
✅ 接受第一级嵌套目录。
❌ 不接受第二级嵌套目录。
components/*/utils ✅ 接受目录 components
✅ 接受第一级嵌套目录。
✅ 接受第二级嵌套目录 utils
❌ 不接受其他第二级嵌套目录。
legacy/** ✅ 接受目录 legacy
✅ 接受任何层级的嵌套目录。
components/*/legacy/** ✅ 接受目录 components
✅ 接受第一级嵌套目录。
✅ 接受第二级嵌套目录 legacy
❌ 不接受其他第二级嵌套目录。
✅ 接受 legacy 目录内任何层级的嵌套目录。

⚠️ 类似于 components/*/utils 的规则会自动使 componentscomponents/* 规则生效。因此,不需要为每个层级的目录指定规则。你需要指定最深层级的路径。

⚠️ 不建议过度使用 ** 模式。它会让项目缺乏结构。然而,对于某些自然结构混乱的目录(如 node_modules 或未维护的遗留目录)可能是有用的。

完整示例Demo

假设我们有一个项目结构如下:

my_project/
├── src/
│   ├── components/
│   │   ├── component1/
│   │   │   └── index.js
│   │   ├── component2/
│   │   │   └── utils/
│   │   │       └── helper.js
│   ├── hooks/
│   │   └── useComponent.js
│   ├── legacy/
│   │   └── old-component/
│   │       └── old-helper.js
└── .folderslintrc

.folderslintrc 文件内容如下:

{
  "root": "src",
  "rules": [
    "components/*",
    "pages/components/*/utils",
    "hooks",
    "legacy/**"
  ]
}

运行命令:

dart run folderslint components

更多关于Flutter文件夹校验与管理插件folderslint的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文件夹校验与管理插件folderslint的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中,文件夹结构和文件命名的一致性对于项目的可维护性和团队协作至关重要。folderslint 是一个用于校验和管理 Flutter 项目文件夹结构的插件,它可以帮助开发者确保项目文件夹的命名和结构符合预定义的规则。

安装 folderslint

首先,你需要在 pubspec.yaml 文件中添加 folderslint 作为开发依赖项:

dev_dependencies:
  folderslint: ^1.0.0

然后运行 flutter pub get 来安装依赖项。

配置 folderslint

folderslint 需要一个配置文件来定义文件夹结构的规则。你可以在项目的根目录下创建一个 folderslint.yaml 文件,并在其中定义规则。

以下是一个简单的 folderslint.yaml 配置示例:

rules:
  - path: "lib/"
    pattern: "^[a-z_]+$"
    exclude:
      - "lib/main.dart"
  - path: "assets/"
    pattern: "^[a-z0-9_]+$"

在这个配置中:

  • path 指定了要校验的文件夹路径。
  • pattern 是一个正则表达式,用于匹配文件夹和文件的命名规则。
  • exclude 是一个可选字段,用于排除不需要校验的文件或文件夹。

使用 folderslint

安装并配置好 folderslint 后,你可以通过以下命令来校验项目的文件夹结构:

flutter pub run folderslint

如果项目的文件夹结构符合配置文件中定义的规则,命令将不会输出任何内容。如果有不符合规则的文件夹或文件,folderslint 会输出相应的错误信息。

自动修复

folderslint 还支持自动修复功能。你可以通过以下命令来自动修复不符合规则的文件夹和文件命名:

flutter pub run folderslint --fix

这个命令会根据配置文件中的规则自动重命名不符合规则的文件夹和文件。

集成到 CI/CD

为了确保项目在每次提交或构建时都符合文件夹结构的规则,你可以将 folderslint 集成到你的 CI/CD 流程中。例如,在 GitHub Actions 中添加一个步骤来运行 folderslint

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Flutter
        uses: subosito/flutter-action@v2
        with:
          flutter-version: 'stable'
      - name: Run folderslint
        run: flutter pub run folderslint
回到顶部