在打字稿库项目中组织NPM模块导出的最佳实践?

时间:2020-08-14 23:16:42

标签: typescript npm

我正在用Typescript编写一个库包,该库包将发布到npm注册表中,以便可以被其他各种项目使用。

我一直遵循publishing doc,以确保--declaration的{​​{1}}选项正确,这样类型定义也可以导出到tsc文件中。

我现在的问题是,这样的出口分散在各个文件夹中,而我的包裹的消费者正像下面那样进口它们。

*.d.ts

我想知道这是否可以接受,因为看起来很乱。我应该编写自己的声明文件以更整洁的方式组织它们吗?

对于类似问题的建议exporting the API through a general index.ts file,已有答案。这对我来说听起来很合理,但是我只是想知道是否直接从import { FooType } from 'my-test-pacakge/dist/src/foo/types'; import { BarInterface } from 'my-test-package/dist/src/foo/bar'; 文件夹导入是否被认为是不正确的做法?

1 个答案:

答案 0 :(得分:1)

大多数软件包都希望从1个导出点导出,这样您的库用户就无需了解有关软件包目录结构的任何信息。

import { FooType, BarInterface } from 'my-test-package'.

一个额外的好处是,您可以在不影响最终用户的情况下重组包装的内部结构,并且清楚地说明了包装用户打算使用n项是什么,以及在您的包裹内部。

是的,我同意这是一种最佳做法。

有些软件包具有附加的命名空间,mysql2软件包具有两个主要导出功能:

import { Connection } from 'mysql2';
import { Connection } from 'mysql2/promise';

但是请注意,这里没有类似dist的东西。 dist对最终用户没有意义。