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

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

- ✅ 轻松配置,只需简单的规则在一个文件中。
- ✅ 极其快速。
- ✅ 支持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
的规则会自动使 components
和 components/*
规则生效。因此,不需要为每个层级的目录指定规则。你需要指定最深层级的路径。
⚠️ 不建议过度使用 **
模式。它会让项目缺乏结构。然而,对于某些自然结构混乱的目录(如 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
更多关于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