对于已发布的软件包,@Types应该是什么依赖性类型



我正在创建一个我打算发布给NPM的软件包。我正在用打字稿编写软件包,并设置了我的tsconfig文件,以与编译的JavaScript一起发出打字稿声明文件,以便使用Typescript的其他人可以在其IDE中获取适当的类型信息 - 漂亮的标准。我正在利用一些肯定的软件包,但不确定它们应该是什么依赖类型。如果有人在打字稿项目中使用我的软件包,我的声明文件将需要安装相关的@Types软件包,但是如果他们使用JavaScript,则不需要安装这些软件包。我认为@Types软件包应该在我的软件包的可选依赖性中。这是正确的吗?

根据布莱恩·特尔森(Brian Terlson)的说法,应将远程依赖性用作经验法则。

正常依赖性(不推荐)

您选择了@types的版本,但是不能保证它会匹配您的消费者使用的版本。例如,当用户在节点11上时,您可能会选择@types/node@10.0.0

开发依赖性(不推荐)

由于您的消费者安装您的包裹时未安装它们,因此他们需要将其添加到自己的项目中(假设他们正在使用Typescript)。

开发依赖性在您的源代码中镜像(有时推荐)

如果您对@types/*的使用最少,则镜像代码中使用的类型定义可能是有意义的。模仿第三方定义在做什么,并将其保存在您的代码中。不利的一面是必须使自己的定义与其原始版本同步。

对等依赖性(推荐)

中间立场。它们将由您的软件包和消费者的包装安装和重复使用。唯一想到的问题是当多个库取决于某些@types/*,但它们的版本不匹配。

最新更新