typescript - 在 typescript 库项目中组织 NPM 模块导出的最佳实践?

标签 typescript npm

我正在用 Typescript 编写一个库包以发布到 npm 注册表,这样它就可以被其他各种项目使用。

我已经关注了 publishing doc确保 --declaration 选项对于 tsc 为真,这样类型定义也会在 *.d.ts 文件中导出。

我的问题是现在这样的导出分散在不同的文件夹中,我的包的消费者正在导入它们,如下所示。

import { FooType } from 'my-test-pacakge/dist/src/foo/types';
import { BarInterface } from 'my-test-package/dist/src/foo/bar';

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

类似问题的现有答案建议 exporting the API through a general index.ts file .这对我来说听起来很合理,但我只是想知道直接从 dist 文件夹导入是否被认为是不好的做法?

最佳答案

大多数包都倾向于从 1 个导出点导出,这样您的库的用户就不需要知道任何关于您的包的目录结构。

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

额外的好处是您可以在不影响最终用户的情况下重组您的包的内部结构,并且它清楚地描述了您打算由您的包的用户使用的项目,以及您的包的内部.

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

有些包有额外的命名空间,mysql2 包有两个主要导出:

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

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

关于typescript - 在 typescript 库项目中组织 NPM 模块导出的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63421058/

相关文章:

angularjs - TypeScript 和 Angular - 何时使用模块与 IIFE

arrays - 如何使用 Typescript 定义带有动态键的数组?

javascript - 从 package.json 配置 npm cli 标志

node.js - Apache Cordova 安装错误

node.js - 错误 : Could not locate the bindings file. 已尝试:

json - NPM 安装失败并出现神秘的 "Unexpected token in JSON"错误

typescript - 有没有办法在 TypeScript 中创建扩展原始类型的标称类型?

javascript - Angular 8 NgRx - 错误 : Detected unserializable action

angular - 通过指令更新 HTML 元素的可见性

ios - 在 Xcode 中找不到“opencv2/opencv.hpp”文件