如何解决在打字稿库项目中组织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个导出点导出,这样您的库用户就无需了解有关软件包目录结构的任何信息。
import { FooType,BarInterface } from 'my-test-package'.
一个额外的好处是,您可以在不影响最终用户的情况下重组包装的内部结构,并且清楚地说明了包装用户打算使用n
项是什么,以及在您的包裹内部。
是的,我同意这是一种最佳做法。
有些软件包具有附加的命名空间,mysql2
软件包具有两个主要导出功能:
import { Connection } from 'mysql2';
import { Connection } from 'mysql2/promise';
但是请注意,这里没有类似dist
的东西。 dist
对最终用户没有意义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。