使用 eslint 强制存储库中的文件夹结构和名称

问题描述 投票:0回答:3

我希望在文件夹及其子文件夹的特定路径中强制使用名称结构

不仅是名称的样式(烤肉串、骆驼),还有文件夹和文件的实际名称

让我们以以下路径为例

./src/modules/module1
./src/modules/module2
./src/modules/module3

提供的每个路径都应强制使用名称的子文件夹

services
components
style

在这些路径上创建具有不同名称的嵌套文件夹应该无效

所以最终结果应该是这样的:

./src/modules/module1/services (valid)
./src/modules/module1/components (valid)
./src/modules/module2/components (valid)
./src/modules/module1/banana (not valid)
./src/modules/orange/yellow (valid)

eslint 是合适的工具吗?我应该使用什么特定的插件?

我只能找到名称样式的解决方案,但没有找到任何固定命名结构的解决方案

我正在reactJS项目中使用类型脚本,并寻找一个不与任何IDE耦合的解决方案

谢谢

javascript reactjs typescript eslint lint
3个回答
3
投票

查看FoldersLint,它应该可以完成这项工作。

https://github.com/denisraslov/folderslint

它的工作原理基本上是这样的:


0
投票

您可以使用 eslint repo-struct 插件,它接收包含项目文件夹和文件结构的配置文件,并验证命名/大小写。

https://github.com/eduhdm/eslint-plugin-repo-struct


0
投票

eslint 是合适的工具吗?我应该使用什么特定的插件?

是的,eslint-plugin-project-struct它非常适合。

以下是当前功能列表:

✅ 项目结构验证。
✅ 验证文件夹和文件名。
✅ 姓名大小写验证。
✅ 名称正则表达式验证。
✅ 文件扩展名验证。
✅ 继承父级的名称(子级继承其所在文件夹的名称)。
✅ 文件夹递归。
✅ 强制嵌套/扁平结构。

./src/modules/module1/services(有效) ./src/modules/module1/components(有效) ./src/modules/module2/components(有效) ./src/modules/module1/banana (无效) ./src/modules/orange/yellow(有效)

这是满足这些要求的配置。

{
  "structure": {
    "name": "src",
    "children": [
      {
        "name": "modules",
        "children": [
          {
            "ruleId": "module"
          }
        ]
      }
    ]
  },
  "rules": {
    "module": {
      "name": "/^${{lowerCase}}$/",
      "children": [
        {
          "name": "services",
          "children": [
              // ... rules for services folder
          ]
        },
        {
          "name": "components",
          "children": [
            // ... rules for components folder
          ]
        },
        {
          "name": "style",
          "children": [
               // ... rules for style folder
          ]
        }
      ]
    }
  }
}

© www.soinside.com 2019 - 2024. All rights reserved.