#ts #re-exports #index #export #js #path #js-ts

bin+lib reexport

使用 Rust 简化 js/ts 文件的重新导出

1 个稳定版本

1.0.0 2023 年 3 月 5 日

#2#js-ts

MIT 许可证

9KB
124 代码行(不包括注释)

Reexport - 由 Erik Medeiros 开发

原因

在 JavaScript 世界中,有一个常见的模式是索引文件重新导出同一文件夹中的所有其他文件,以下是一个示例文件层次结构

src/hooks
├── use-auth.ts
├── use-filter.ts
├── use-something-else.ts
└── index.ts

index.ts 的内容将是

export * from './use-auth';
export * from './use-filter';
export * from './use-something-else';

当你有多个文件夹和多个文件时,手动重新导出每个文件是非常痛苦的,这个包就是为了解决这个问题而来的!

待办事项

  • 更好的错误处理
  • 更好的用户反馈
  • 更好的 README 吗?

用法

考虑以下文件夹

src/components
├── component1.js
└── component2.ts

只需传递文件夹的路径

reexport src/components

就会创建一个 index.ts 文件,重新导出该文件夹中的所有文件!

// src/components/index.ts

export * from './component1';
export * from './component2';

你也可以传递多个要重新导出的路径,如下所示

reexport src/components src/hooks

递归标志

现在让我们看看一个更复杂的文件树

src/components
├── a
│   ├── a1
│   │   ├── file2.ts
│   │   └── file.ts
│   ├── a2
│   │   └── aa1
│   │       ├── file2.js
│   │       └── file.ts
│   └── file.ts
├── b
│   ├── b1
│   │   └── file.ts
│   └── file.ts
├── c
│   └── file.ts
└── test.json

尝试运行以下命令

reexport src/components

它将创建以下文件

// src/components/index.ts

// test.json was ignored!
export * from './a';
export * from './b';
export * from './c';

但请注意,没有任何导出的文件夹有 index.ts 文件,这使得创建的文件变得无用。但不用担心!这可以通过传递递归标志来解决

传递此标志将告诉 reexport 为每个导出的子文件夹创建一个 index.ts 文件。

reexport src/components --recursive

执行上述命令将产生以下文件层次结构

src/components
├── a
│   ├── a1
│   │   ├── file2.ts
│   │   ├── file.ts
│   │   └── index.ts
│   ├── a2
│   │   ├── aa1
│   │   │   ├── file2.js
│   │   │   ├── file.ts
│   │   │   └── index.ts
│   │   └── index.ts
│   ├── file.ts
│   └── index.ts
├── b
│   ├── b1
│   │   ├── file.ts
│   │   └── index.ts
│   ├── file.ts
│   └── index.ts
├── c
│   ├── file.ts
│   └── index.ts
├── index.ts
└── test.json

贡献

如果你觉得这个解释令人困惑,或者有一些功能需要实现,请与我联系或发起一个 pull request(我不知道这怎么工作)

依赖关系

~1.2–1.8MB
~34K SLoC