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

qltillow  于 2023-08-07  发布在  TypeScript
关注(0)|答案(3)|浏览(142)

我期待着强制在一个文件夹和它的子文件夹的特定路径的名称结构

不仅是名称的样式(kebab,camel),而且是文件夹和文件的实际名称

让我们以下列路径为例

./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项目中使用type-script,并寻找一个不耦合到任何IDE的解决方案
谢了

krugob8w

krugob8w1#

看看FoldersLint,它应该能完成这项工作。
https://github.com/denisraslov/folderslint
基本上是这样工作的:

的数据

oxf4rvwz

oxf4rvwz2#

您可以使用eslint repo-structure插件,它接收带有项目文件夹和文件结构的配置文件,并验证命名/大小写。
https://github.com/eduhdm/eslint-plugin-repo-structure

epggiuax

epggiuax3#

eslint是正确的工具吗?我应该使用的任何特定插件?
是的,eslint-plugin-project-structure非常适合。
以下是当前功能列表:
⑶项目结构验证。
文件夹和文件名的验证。
名称案例验证。
Name regex validation.
文件扩展名验证。
继承父文件夹的名称(子文件夹继承其所在文件夹的名称)。
文件夹递归。
强制嵌套/扁平结构。
让我们以下列路径为例
./src/modules/module1
./src/modules/module2
./src/modules/module3
每个提供的路径应该强制子文件夹的名称
服务
组件
式样
在这些路径上创建具有不同名称的嵌套文件夹应该无效
./src/modules/module 1/services(有效)
./src/modules/module 1/components(有效)
./src/modules/module 2/components(有效)
./src/modules/module 1/banana(无效)
./src/modules/橙子/yellow(有效)
根据我从你的描述中理解的./src/modules/orange/yellow (valid)应该是./src/modules/orange/yellow (not valid)
下面是满足这些要求的配置。
1.只能在modules文件夹中创建文件夹。文件夹的名称必须符合camelCase

  1. modules文件夹中的每个文件夹只能有3个名为componentsstyleservices的子文件夹。
{
  "structure": {
    "name": "src",
    "children": [
      {
        "name": "modules",
        "children": [
          {
            "ruleId": "module"
          }
        ]
      }
    ]
  },
  "rules": {
    "module": {
      "name": "/^${{camelCase}}$/",
      "children": [
        {
          "name": "services",
          "children": [
              // ... rules for services folder
          ]
        },
        {
          "name": "components",
          "children": [
            // ... rules for components folder
          ]
        },
        {
          "name": "style",
          "children": [
               // ... rules for style folder
          ]
        },
      ]
    }
  }
}

字符串
在这里,您将找到API的详细描述。https://github.com/Igorkowalski94/eslint-plugin-project-structure#api

相关问题