当前位置: 首页 > 知识库问答 >
问题:

我如何决定@type/*是否进入依赖关系或DevDependness?

毛宏达
2023-03-14

我在我的项目中使用TypeScript 2。我想使用一些js库,但也为该库打字。我可以安装类型与简单的npm安装@类型/一些库。我不确定我是否应该-保存-保存-开发它们。在我看来,即使是定义类型GitHub自述文件也提到了这两个版本,但从未解释过它们。我认为@类型应该在devDependence中,因为类型是开发所需要的,而不是在运行时使用,但是我在依赖项中看到了很多次@类型。我糊涂了。

我应该如何决定@types/*是进入依赖项还是依赖项?实际上是否有一些或多或少的官方指示?

共有3个答案

邹桐
2023-03-14

在部署节点的特定情况下。从js应用程序到生产,只需要安装运行应用程序所需的依赖项。

npm安装--生产

npm ci--生产

纱线——生产

在这种情况下,类型应该位于devDependencies中,以防止它们使安装膨胀。

备注:我知道布拉德·威尔逊在对另一个答案的评论中提到了这一点。不过,这一点似乎值得回答。

宗冠宇
2023-03-14

如果您只是生成一个bundle,那么可能不需要区分依赖项开发依赖项。当发布其他人可以使用的包时,npm的此功能通常很有用,并且您不想用冗余的依赖项向它们发送垃圾邮件。

可能还有其他的用例可以帮助拆分依赖关系,但是除非您对此有明确的需求,否则我的建议是选择其中一个并将所有内容放在那里。如果需要的话,事后拆分它们并不难。

此实践IRL的一个著名示例是create react app,默认情况下,它创建的未弹出样板文件将所有内容放置在依赖项中,请参见此线程和此答案

芮意
2023-03-14

假设您正在开发一个包“A”,该包在devDependness中包含@type/某些模块包。出于某种原因,您正在从@type/thum-模块导出类型

import {SomeType} from 'some-module';
export default class APackageClass {
     constructor(private config: SomeType) {

     }
}

现在,包“A”的打字稿消费者无法猜测什么是某些类型,因为包“A”的开发依赖项没有安装

在这种情况下,您需要将@types/*包与常规的“依赖项”放在一起。对于其他情况,“依赖性”就足够了。

 类似资料:
  • 问题内容: 我有一个二进制文件,其中ldd显示了意外的依赖项和libicuuc(来自“ icu”)。 由于在该系统上libxml动态依赖于libicuuc,因此ldd最终会找到它是有意义的,但是是否期望libicuuc也出现在A的ldd输出中?是否有一些命令仅检索链接为依赖项依赖关系的库? 问题答案: 显示启动应用程序或加载共享库时需要加载的所有库。 仅显示二进制文件的直接依赖项。 是否有一些命令

  • 问题内容: 我在ivaven.xml中添加了一个依赖项(让我们将其命名为A),它在maven Central中具有一个pom文件。Ivy使用ibiblio解决了Maven依赖关系。添加到ivy.xml的依赖项(A)具有传递的依赖项(B)。到目前为止,到目前为止很好。常春藤无法解决传递性依赖项(B)的依赖项(C)。 我在ivy.xml中定义了A,如下所示: 在B的pom文件中,在编译和测试范围中都定

  • 编写的PHP扩展需要需要依赖另外一个扩展,在PHP-X中可以调用Extension->require来实现。 PHPX_EXTENSION() { Extension *ext = new Extension("test", "0.0.1"); ext->require("swoole"); ext->require("sockets"); return ext;

  • 依赖关系 这是一个非常轻量级的模块,没有其他依赖项。希望大家在JVM或Android上使用以太坊的RLP编码的项目时会选择使用这个模块,而不再编写自己的实现。

  • 依赖关系 ABI一个非常轻量级的模块,唯一的第三方依赖是 Bouncy Castle,用于hash加密 (Spongy Castle on Android)。 最后希望java和安卓开发者,在JVM或Android上有以太坊ABI合作的项目时会选择使用这个模块,而不是再编写自己的实现。

  • 问题内容: 我有一个依赖关系如下: 当我部署一切正常时,这将拉下另一个引发ClassDefNotFound的依赖项。 我添加了两个依赖项,如下所示: 并且仍然面临着同样的问题,即:MVN带来下来不 我该如何解决? 编辑: 添加; 问题答案: 您可能有一个传递依赖项,另一个依赖项取决于您不需要的版本。 要获得所有直接和传递依赖关系的概述,请尝试: mvn依赖项:树 如果您发现同一依赖项的不同版本之间