【问题标题】:Grouping all files from one directory under one alias将一个目录中的所有文件分组到一个别名下
【发布时间】:2019-08-01 19:09:39
【问题描述】:

假设我有这个目录结构:

src
├──Utils
|  ├──File2.ts
|  ├──File3.ts
index.ts
tsconfig.json

我知道你可以像这样在 tsconfig.json 中设置路径别名:

{
    "compilerOptions": {
        .....
        "paths": {
            "Utils/*": ["src/Utils/*"],
        }
    }
}

然后我可以在我的 index.ts 中使用这些别名:

import { File2 } from 'Utils/File2';
import { File3 } from 'Utils/File3';

我相信你注意到了冗余:即使File2File3 在同一个文件夹中,我们也必须为Utils 文件夹中的每个文件写入import

是否可以将这些文件归为一个导入并像下面的示例一样使用它?

import { File2, File3 } from 'Utils';

我试过这个配置,但它不起作用:

{
    "compilerOptions": {
        "paths": {
            "Utils": ["src/Utils/*"],
        }
    }
}

编辑

另外,我不想使用像 index.ts 这样的桶文件,我从 Utils 文件夹中导出所有内容。

【问题讨论】:

    标签: typescript path alias tsconfig


    【解决方案1】:

    这可以通过使用桶文件来解决。在/Utils中创建index.ts文件并添加

    export * from './File2';
    export * from './File2';
    

    在你的tsconfig

    {
        "compilerOptions": {
            "paths": {
                "Utils": ["src/Utils"]
            }
        }
    }
    

    不使用桶文件是不可能对这些导入进行分组的。但是,如果您不想像barrelsby 那样手动维护它们,那么有些库可以为您生成这些文件。或者,您可以编写自己的脚本以使其保持最新状态。

    【讨论】:

    • 啊啊。我忘了提这个。我想要没有那个桶文件:(。这是因为 Utils 文件夹里面会有很多文件,我不想每次添加新文件时都更新 index.ts。
    • 那是不可能的然后 AFAIK。打字稿需要一个文件来导入。我建议编写一个小脚本,在构建步骤中生成和更新桶文件作为解决方法。
    • 打字稿转换器能做到吗?
    • 我从未尝试过变形金刚,但他们应该能够解决这个问题。我建议为此使用一个库(更新了我的答案)。
    猜你喜欢
    • 1970-01-01
    • 2016-05-07
    • 2020-09-23
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多