@types对于已发布的程序包应该是什么依赖性类型?

时间:2019-02-28 13:01:17

标签: typescript npm definitelytyped

我正在创建要发布到NPM的软件包。我正在用Typescript编写程序包,并设置了tsconfig文件以发出Typescript声明文件以及已编译的javascript,以便其他使用Typescript的人可以在其IDE中获得正确的类型信息-非常标准。我正在使用某些DefinitelyTyped包,但不确定它们应该是哪种依赖类型。如果有人在打字稿项目中使用我的软件包,我的声明文件将需要安装相关的@types软件包,但是如果他们使用的是javascript,则不需要安装这些软件包。我在想@types包应该在我包的package.json文件的optionalDependencies中。这是正确的吗?

1 个答案:

答案 0 :(得分:1)

According to Brian Terlson,应将经验丰富的对等依赖项作为经验法则。

正常依赖关系(不推荐)

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

开发依赖项(不推荐)

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

反映在源代码中的开发依赖项(有时建议)

如果您对@types/*的使用量很少,则可以在代码中镜像使用的类型定义。模拟第三方定义在做什么,并将其保留在您的代码中。缺点是必须保持自己的定义与其原始版本保持同步。

对等依赖性(推荐)

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